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
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.
You can use linker script, and add '/usr/local/lib' to search_dir. see this Linker_Scripts to get more details.
add /usr/local/lib to GCC_EXEC_PREFIX shell environment, and try it again. more details search print-search-dirs in "man" of g++.
just suggestion, it has not yet tried.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.