如何从不存在的(编译时)文件夹中 link 共享库

how to link shared library from non existing(in compile time) folder

我正在尝试 link 使用 -rpath 选项将共享库共享到另一个共享库(protobuf),问题是该库在编译时位于另一个目录中,而不是在运行时,并且 -rpath 选项需要存在于编译时路径中。 (所以我得到一个 "No such file or directory" 错误) 有什么解决方法吗? 我宁愿不使用 LD_LIBRARY_PATH 变量来解决这个问题。

-rpath 指定运行库搜索路径。

这是来自 link Program Library HOWTO

的报价

” 在开发过程中,存在修改许多其他程序也使用的库的潜在问题——并且您不希望其他程序使用 developmental''library, only a particular application that you're testing against it. One link option you might use is ld'srpath'' 选项,该选项指定运行时库搜索路径正在编译的特定程序。在 gcc 中,您可以通过这样指定来调用 rpath 选项: -Wl,-rpath,$(DEFAULT_LIB_INSTALL_PATH) 如果您在构建库客户端程序时使用此选项,则无需担心 LD_LIBRARY_PATH(接下来描述),除非确保它不冲突,或使用其他技术来隐藏库。 “

我在这里找到了答案Can I change 'rpath' in an already compiled binary?

编译后更改 rpath 解决了我的问题。

[编辑] 还有另一种更好的方法:how to link to shared lib from shared lib with relative path