gcc - /usr/bin/ld error: cannot find <library> in /usr/local/lib though ldconfig list it, and path added to ld.so.conf

allan.simon picture allan.simon · Nov 2, 2013 · Viewed 57.5k times · Source

I try to compile a C++ code, using a library I've also compiled manually and installed in /usr/local/lib

The compilation of the software fails at the linking step:

 /usr/bin/ld: error: cannot find -lcppdb

it seems that g++ does not search by default in /usr/local/lib , same for clang++

 g++ -print-search-dirs # does not show /usr/local/lib

however the fact is /usr/local/lib is in my /etc/ld.so.conf and I did run ldconfig as root, and actually running ldconfig -p | grep cppdb shows me

libcppdb_sqlite3.so.0 (libc6) => /usr/local/lib/libcppdb_sqlite3.so.0
libcppdb_sqlite3.so (libc6) => /usr/local/lib/libcppdb_sqlite3.so
libcppdb.so.0 (libc6) => /usr/local/lib/libcppdb.so.0
libcppdb.so (libc6) => /usr/local/lib/libcppdb.so

adding the option -L/usr/local/lib of course solve the problem, but the goal is to use configuration files

Answer

Ignacio Vazquez-Abrams picture Ignacio Vazquez-Abrams · Nov 2, 2013

ld, the linker, does not use external configuration files for that. ldconfig is for the loader, ld.so. Create a makefile if you want to set values for the linker somewhere.