krojew
krojew

Reputation: 1336

ldd cannot find library

I'm having problems with a library, which cannot be found, despite being there in proper version.

ldd /lib/libQt5Core.so
        linux-gate.so.1 (0xb77ac000)
        libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb71d4000)
        libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb71b9000)
        libicui18n.so.57 => /lib/i386-linux-gnu/libicui18n.so.57 (0xb6f20000)
        libicuuc.so.57 => /lib/i386-linux-gnu/libicuuc.so.57 (0xb6d74000)
        libicudata.so.57 => /lib/i386-linux-gnu/libicudata.so.57 (0xb54f6000)
        libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb54f1000)
        libgthread-2.0.so.0 => /lib/i386-linux-gnu/libgthread-2.0.so.0 (0xb54ee000)
        libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb53c0000)
        libstdc++.so.6 => /lib/i386-linux-gnu/libstdc++.so.6 (0xb5242000)
        libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb5140000)
        libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb5120000)
        libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb4f47000)
        /lib/ld-linux.so.2 (0xb77af000)
        libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb4ed0000)

The libQt5Core library is in /lib and has all dependencies met. But if something wishes to use it:

ldd /lib/libQt5Concurrent.so
        linux-gate.so.1 (0xb7735000)
        libQt5Core.so.5 => not found
        libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb76f1000)
        libstdc++.so.6 => /lib/i386-linux-gnu/libstdc++.so.6 (0xb7573000)
        libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7471000)
        libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7453000)
        libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb727a000)
        /lib/ld-linux.so.2 (0xb7738000)

libQt5Core is no longer found. Both libs have the same architecture. Does anyone have any ideas?

Upvotes: 2

Views: 1280

Answers (2)

TekOps
TekOps

Reputation: 186

You can see what it sees by running "ldconfig -p" and grepping for what you are looking for:

    # ldconfig -p |grep libclnt
        libclntsh.so.11.1 (libc6) => /lib/libclntsh.so.11.1

Set the LD_LIBRARY_PATH to all your necessary library paths then run 'ldconfig' by itself and make sure you don't have 32-bit and 64-bit conflicts and it should work.


    SET LD_LIBRARY_PATH=:/usr/lib/oracle/12.2/client64/lib:/usr/lib/oracle/11.2/client/lib

run "ldconfig" by itself

Then run "ldconfig -p" to see what it sees (in this case I grep'd for what I was looking for:

    # ldconfig -p |grep libclnt
        libclntsh.so.12.1 (libc6,x86-64) => /lib/libclntsh.so.12.1
        libclntsh.so.12.1 (libc6,x86-64) => /lib64/libclntsh.so.12.1
        libclntsh.so.11.1 (libc6) => /lib/libclntsh.so.11.1

And you can see how it saw the libclntsh.so.12.1 library which was missing previously.

Thanks, David

Upvotes: 0

krojew
krojew

Reputation: 1336

Turns out it's an issue with kernel being too old. On newer ones it works fine.

Upvotes: 1

Related Questions