我尝试编译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
向我显示
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
当然可以解决问题,但目标是使用配置文件
答案 0 :(得分:8)
ld
,链接器,不使用外部配置文件。 ldconfig
用于加载程序ld.so
。如果要在某处设置链接器的值,请创建一个makefile。
答案 1 :(得分:1)
在makefile中指定-L
个开关是解决此问题的常用方法,但您可以通过修改默认GCC spec file来实际进行系统范围的更改,这可用于指定其他传递给编译器,链接器等的选项我过去已经做过这个来解决你的具体问题,但是很久以前,所以我不能给你一个具体的例子,不幸的是。
答案 2 :(得分:0)
1,您可以使用链接描述文件,并将'/ usr / local / lib'添加到search_dir。 请参阅此Linker_Scripts以获取更多详细信息。
2,将/ usr / local / lib添加到GCC_EXEC_PREFIX shell环境,然后再次尝试。 更多细节在g ++的“man”中搜索print-search-dirs。
只是建议,它还没有尝试过。