共享库的gcc链接:使用$ ORIGIN

时间:2016-07-04 13:22:27

标签: gcc dependency-injection shared-libraries ld rpath

这是this one的后续问题。

我了解在$ORIGIN选项中使用-rpath会生成一个动态绝对路径,该路径始终指向指定位置 - 无论我在何处使用该库。

让我感到困惑的是以下内容:我使用此库生成共享二进制文件,并使用-Wl,-rpath设置(再次)$ORIGIN选项,以使二进制文件始终可以找到其库。现在,库的原始$ORIGIN值不再可用或错误,因为它似乎被新的值覆盖。

不知怎的,这是可以理解的,因为我现在正在生成一个新的共享对象 - 二进制文件 - 它有自己的$ORIGIN。解决这个问题的方法是为二进制文件-rpath提供两个位置,一个位于库中,另一个位于库本身需要的位置。在我看来,这使-rpath几乎无用,因为我不能只链接到库并指定它的位置我还需要指定库的依赖位置。

我的问题:有没有办法使用-rpath指定分层$ORIGIN值?我想避免绝对路径,这显然会解决我的问题。

0 个答案:

没有答案