> On OpenServer, I usually just build with the SONAME being a full path name. > > I am attaching a patch to the libtool 2.4.6 generated during > a libssh2-1.8.0 build. > > Once all testing is complete, I do > ...... > rm src/libssh2.la > SCOABSPATH=1 ; export SCOABSPATH > gmake 2>&1 | tee x.log > ...... > then package. > > Note: the last hunk is to address a regression introduced in 2.4.6 > with the freebsd reorg.
Thanks for the hint. For some reason I've not been able to build libtool 2.4.3 and above due to a situation I don't know how to resolve: ... GEN libtoolize GEN libltdl/libltdl/lt__argz.h make all-recursive make[1]: Entering directory `/csdi/src/sco507/gnu/libtool/libtool-2.4.6' Making all in . make[2]: Entering directory `/csdi/src/sco507/gnu/libtool/libtool-2.4.6' CC libltdl/loaders/libltdl_libltdl_la-preopen.lo libtool: Version mismatch error. This is libtool 2.4.6, revision 2.4.6, libtool: but the definition of this LT_INIT comes from revision . libtool: You should recreate aclocal.m4 with macros from revision 2.4.6 libtool: of libtool 2.4.6 and run autoconf again. make[2]: *** [libltdl/loaders/libltdl_libltdl_la-preopen.lo] Error 63 make[2]: Leaving directory `/csdi/src/sco507/gnu/libtool/libtool-2.4.6' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/csdi/src/sco507/gnu/libtool/libtool-2.4.6' make: *** [all] Error 2 autoreconf, or at least the way I've done things, does not correct this issue. Nevertheless, after applying your patch, it is possible to see that DT_SONAME now has a full path: $ readelf -d /usr/local/lib/libssh2.so.1 | grep SONAME 0x0000000e (SONAME) Library soname: [/usr/local/lib/libssh2.so.1] Unfortunately, this does not seem to cure loading of indirect dependencies as far as I can see: $ example/.libs/ssh2 Object: Search Path DT_RUNPATH /usr/local/lib Object: example/.libs/ssh2 Search Path LD_LIBRARY_PATH Object: example/.libs/ssh2 Search Path DT_RPATH Object: example/.libs/ssh2 Search Path DEFAULT /usr/lib _rt_so_find: trying: /usr/local/lib/libssh2.so.1 Object: /usr/local/lib/libssh2.so.1 Search Path DT_RUNPATH /usr/local/lib search_dir_list: trying: /usr/local/lib/libcrypto.so.3 _rt_so_find: trying: /usr/lib/libz.so.1 search_dir_list: trying: /usr/local/lib/libssl.so.3 _rt_so_find: trying: /usr/lib/libcrypt.so search_dir_list: trying: /usr/local/lib/libcrypto.so.3 _rt_so_find: trying: /usr/lib/libz.so.1 search_dir_list: trying: /usr/local/lib/libssl.so.3 _rt_so_find: trying: /usr/lib/libsocket.so.2 search_dir_list: trying: /usr/lib/libnsl.so search_dir_list: trying: /usr/lib/libcrypto.so.3 dynamic linker : example/.libs/ssh2 : could not open libcrypto.so.3 Killed Curiously, the above shows "trying /usr/local/lib/libcrypto.so.3" so I'm not sure what went wrong. $ ls -l /usr/local/lib/libcrypto.so.3 lrwxrwxrwx 1 root sys 54 Dec 14 13:29 /usr/local/lib/libcrypto.so.3 -> /opt/K/CSDI/openssl/3.0.3/usr/local/lib/libcrypto.so.3 $ ls -l /opt/K/CSDI/openssl/3.0.3/usr/local/lib/libcrypto.so.3 -rwxr-xr-x 1 root sys 3731468 Dec 14 13:29 /opt/K/CSDI/openssl/3.0.3/usr/local/lib/libcrypto.so.3 Perhaps a change to DT_NEEDED is also required so the indirect dependencies also have paths: $ readelf -d /usr/local/lib/libssh2.so.1 Dynamic segment at offset 0xfb40 contains 21 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libcrypto.so.3] 0x00000001 (NEEDED) Shared library: [/usr/lib/libz.so.1] 0x00000001 (NEEDED) Shared library: [libssl.so.3] 0x0000000c (INIT) 0x4dae0 0x0000000d (FINI) 0x4daf0 0x0000000e (SONAME) Library soname: [/usr/local/lib/libssh2.so.1] 0x0000001d (RUNPATH) Library runpath: [/usr/local/lib] 0x00000004 (HASH) 0xc0 0x00000005 (STRTAB) 0x5498 0x00000006 (SYMTAB) 0x1408 0x0000000a (STRSZ) 18886 (bytes) 0x0000000b (SYMENT) 16 (bytes) 0x00000016 (TEXTREL) 0x0 0x00000003 (PLTGOT) 0x4ec2c 0x00000002 (PLTRELSZ) 40 (bytes) 0x00000014 (PLTREL) REL 0x00000017 (JMPREL) 0xfb18 0x00000011 (REL) 0x9e60 0x00000012 (RELSZ) 23736 (bytes) 0x00000013 (RELENT) 8 (bytes) 0x00000000 (NULL) 0x0 I'm assuming there must be something else different in the way we build. Regards, Kevin R. Bulgrien