我尝试编译一个C++代码,使用一个库,我也手动编译并安装在/ usr/local/lib中
在链接步骤中软件的编译失败:
/usr/bin/ld: error: cannot find -lcppdb
Run Code Online (Sandbox Code Playgroud)
似乎g ++默认不搜索/usr/local/lib,相同的clang++
g++ -print-search-dirs # does not show /usr/local/lib
Run Code Online (Sandbox Code Playgroud)
然而事实是/usr/local/lib在我/etc/ld.so.conf和我确实ldconfig以root身份运行,并且实际运行ldconfig -p | grep cppdb显示我
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
Run Code Online (Sandbox Code Playgroud)
添加选项-L/usr/local/lib当然可以解决问题,但目标是使用配置文件
ld,链接器,不使用外部配置文件.ldconfig是装载机,ld.so.如果要在某处设置链接器的值,请创建一个makefile.