On Apr 13, 2017, at 07:56:08, Roger Oberholtzer <roger.oberholtzer@gmail.com> wrote:
I am trying to link an application that uses libpthread and libtbb. I have these installed (OPB standard packages) on an up-to-date Tumbleweed.
For some reason I cannot understand, these libs are not found. When I run ldd on a program of library, I get:
linux-vdso.so.1 (0x00007ffd23d17000) libpthread.so.0 => not found libiomp5.so => /opt/rsoft/lib/libiomp5.so (0x00007f82fb669000) libtbb.so.2 => not found libippch.so.7.0 => /opt/rsoft/lib/libippch.so.7.0 (0x00007f82fb562000) libippdc.so.7.0 => /opt/rsoft/lib/libippdc.so.7.0 (0x00007f82fb455000) libippcc.so.7.0 => /opt/rsoft/lib/libippcc.so.7.0 (0x00007f82fb338000) libippcv.so.7.0 => /opt/rsoft/lib/libippcv.so.7.0 (0x00007f82fb214000) libippj.so.7.0 => /opt/rsoft/lib/libippj.so.7.0 (0x00007f82fb100000) libippi.so.7.0 => /opt/rsoft/lib/libippi.so.7.0 (0x00007f82faf4f000) libipps.so.7.0 => /opt/rsoft/lib/libipps.so.7.0 (0x00007f82fade7000) libippcore.so.7.0 => /opt/rsoft/lib/libippcore.so.7.0 (0x00007f82faccc000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f82faaae000) libc.so.6 => /lib64/libc.so.6 (0x00007f82fa709000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f82fa505000) libm.so.6 => /lib64/libm.so.6 (0x00007f82fa1f2000) /lib64/ld-linux-x86-64.so.2 (0x00005617b4a56000)
Looking at the above ldd ouput, I see that libpthread.so.0 is listed twice, the first time it is listed, it is not found, the second time it is listed, it is found. That is curious. Can you run the binutils tool readelf on the library? readelf -d libfoo.so this will give the ELF dynamic header, which should list the dependencies of the file and if there is any RUNPATH or RPATH in the shared library.
Looking at libtbb.so.2, I see:
ldd /usr/lib64/libtbb.so.2 linux-vdso.so.1 (0x00007ffc0b5db000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f172c38e000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f172c170000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f172bde7000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f172bbcf000) libc.so.6 => /lib64/libc.so.6 (0x00007f172b828000) /lib64/ld-linux-x86-64.so.2 (0x000055804559e000) libm.so.6 => /lib64/libm.so.6 (0x00007f172b515000)
So all for that lib is found. Just in case the RPMs did not do so, I ran ldconfig. So I expect the libs in /usr/lib64 to be seen. My /etc/ld.so.conf file is the default:
/usr/local/lib64 /usr/local/lib include /etc/ld.so.conf.d/*.conf # /lib64, /lib, /usr/lib64 and /usr/lib gets added # automatically by ldconfig after parsing this file. # So, they do not need to be listed.
I am not new to this as I use libs all over the place all the time. I have not experienced libs not being seen.
Anyone have any ideas?
This makes no sense. Perhaps the library search path cache has been corrupted? Regardless of the cache, "man ld.so" says that /lib64 should be searched, regardless of the library search cache. -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse+owner@opensuse.org