为什么应用递归ld rpath无法正常工作?

时间:2018-08-28 05:27:16

标签: ld

我的可执行文件oom(递归地)需要共享库libvpncli.so,而共享库又需要libvpnapi.so

当我尝试链接oom时,我得到了:

/usr/bin/ld: warning: libvpnapi.so, needed by /path/to/libvpncli.so, not found

但是,libvpncli.so已使用-rpath选项正确编译,以知道如何找到libvpnapi.so。我用手检查了一下,还ldd进行了显示:

$ldd /path/to/libvpncli.so
libvpnapi.so => /path/to/libvpnapi.so

然后为什么ld的{​​{1}}找不到oom

编辑-回答下午的要点:

“指定运行时路径”

不。链接期间也使用libvpnapi.so来检查所有符号是否都可以解析。无论如何,我不是在这个问题中谈论运行时,而是在链接。

的确,如果我将rpath直接添加到rpath链接行以指向oom,该警告将消失。

但是我不想这样做(由于其他原因)。相反,我需要了解为什么上面的_does_not_起作用。

“链接oom时,必须在命令行中使用-rpath或(也许更好)-rpath-link指定其目录”

不。在不同的系统上,上面的方案确实有效,没有在libvpnapi.so链接行上直接指定-rpath,而是间接,递归地工作。

我的问题是,为什么在每个系统上总是都不起作用?如我的问题所示,当证据表明它不起作用时,它为什么不起作用的原因可能是什么。

0 个答案:

没有答案