[英]gcc - /usr/bin/ld error: cannot find <library> in /usr/local/lib though ldconfig list it, and path added to ld.so.conf
我尝试编译一个C ++代码,使用一个库,我也手动编译并安装在/ usr / local / lib中
在链接步骤中软件的编译失败:
/usr/bin/ld: error: cannot find -lcppdb
似乎g ++默认不在/usr/local/lib
,对于clang++
g++ -print-search-dirs # does not show /usr/local/lib
但事实是/usr/local/lib
在我的/etc/ld.so.conf
,我确实以root身份运行ldconfig
,并实际运行ldconfig -p | grep cppdb
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
添加选项-L/usr/local/lib
当然可以解决问题,但目标是使用配置文件
ld
,链接器,不使用外部配置文件。 ldconfig
用于加载器, ld.so
。 如果要在某处设置链接器的值,请创建一个makefile。
您可以使用链接描述文件,并将'/ usr / local / lib'添加到search_dir。 请参阅此Linker_Scripts以获取更多详细信息。
将/ usr / local / lib添加到GCC_EXEC_PREFIX shell环境,然后再次尝试。 更多细节在g ++的“man”中搜索print-search-dirs。
只是建议,它还没有尝试过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.