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
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.
Specifying -L
switches in your makefile is a common way to deal with this problem, but you can actually make system-wide changes by modifying the default GCC spec file, which can be used to specify additional options to be passed to the compiler, linker, etc. I've done this in the past to address your specific problem, but it was a long time ago, so I can't give you a specific example, unfortunately.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With