dim*_*mba 28 linux gcc compilation
链接期间我有以下警告:
/usr/bin/ld: warning: libxxx.so.6, needed by /a/b/c/libyyy.so, not found (try using -rpath or -rpath-link)
Run Code Online (Sandbox Code Playgroud)
设置环境变量LD_LIBRARY_PATH = path_to_libxxx.so.6使警告静音(添加-Lpath_to_libxxx.so.6没有帮助).
我有一个单独的编译服务器,其中生成的二进制文件只是编译.二进制文件在其他服务器上执行,二进制文件可以看到libxxx.so.6(选中ldd executable).
是否还有其他方法可以在编译时摆脱警告(我有几次并且非常烦人)?
ams*_*ams 39
您需要添加相当于的动态库-L:
-Wl,-rpath-link,/path/to/lib
Run Code Online (Sandbox Code Playgroud)
这将导致链接器在非标准位置查找共享库,但仅用于验证链接是否正确.
如果您希望程序在运行时在该位置找到库,那么可以使用类似的选项:
-Wl,-rpath,/path/to/lib
Run Code Online (Sandbox Code Playgroud)
但是,如果没有这个程序你的程序运行正常,那么你就不需要了.
确保运行时链接程序知道所需库的路径.这是通过在/etc/ld.so.conf.d/中添加带有所需路径的文件来完成的.例如,/ etc/ld.so.conf.d/foo,其中包含以下内容:
/usr/local/lib/foo/
Run Code Online (Sandbox Code Playgroud)
如果您有一个非常旧的Linux版本,可能不支持/etc/ld.so.conf.d/,在这种情况下,您可能必须将路径直接添加到/etc/ld.so.conf文件中.
完成后,您需要通过执行"ldconfig"命令来更新链接器的数据库.