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

all*_*mon 13 c++ linux gcc ld

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

Ign*_*ams 8

ld,链接器,不使用外部配置文件.ldconfig是装载机,ld.so.如果要在某处设置链接器的值,请创建一个makefile.

  • 你的意思是没有办法改变这个系统?通过环境变量的平均值或类似的东西? (3认同)
  • 正确的。使用生成文件。 (2认同)