gcc - / usr / bin / ld错误:在/ usr / local / lib中找不到<library>虽然ldconfig列出它,并且路径已添加到ld.so.conf </library>

时间:2013-11-02 01:27:02

标签: c++ linux gcc ld

我尝试编译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当然可以解决问题,但目标是使用配置文件

3 个答案:

答案 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。

只是建议,它还没有尝试过。