运行时链接程序,将父路径添加到解析路径

我有以下资源(尽可能简化):

foo.c - >主要可执行文件$ {MAIN_FOLDER} / foo,从运行时提供的路径中找到bar.so。

bar.c - >共享库/bar.so,从相对于foo的路径中跳出baz.so

baz.c - > $ {MAIN_FOLDER} /lib/baz.so,有些实现。

我需要做的是让bar.so从foo加载时看到baz.so。 我正在寻找一些我可以在foo中调用的C代码,然后它会调用dlopen或链接器标志来提供给bar.so链接步骤。

我尝试为bar.so设置rpath,但它不起作用,因为$ ORIGIN是bar.so的位置,而不是foo。 不幸的是,在foo中设置RPATH(这是可行的,具有适当的ORIGIN的RPATH传递给bar.so的加载过程)不是一个选项(由于正式限制我无法更改),所以我可以更改代码的foo.c虽然。 另外,使用相对于$ CWD的路径并不能解决问题(不知道程序将从哪个位置调用)。

在加载bar.so之前,尝试在foo中setenv LD_LIBRARY_PATH失败。

这次我对可移植性不感兴趣,现在我只需要Linux的解决方案。

链接地址: http://www.djcxy.com/p/46449.html

上一篇: Runtime linker, adding path to parent executable to the resolution path

下一篇: Use RPATH to point to libc library