可执行文件的RPATH等效项

我有一个c ++共享库,作为其正常行为fork()/ execs()的一部分,包含一些不稳定的遗留代码。除了这个库之外,这个可执行文件没有用,所以我想避免将它放在PATH目录中。我还希望能够在不同的位置安装多个副本,因此不希望硬编码路径。有没有相当于RPATH的东西允许exec()找到这个可执行文件?或者,是否可以从库本身查询共享库的rpath? 编辑:这篇文章表明后者是可能的。如果有人知道问题的答案,我会保持公开。有没有办法检查Linux上的当前rpath?     
已邀请:
你总是可以使用
getenv
来获取共享对象中的环境,但是你真的想要使用它吗?让共享对象在用户的主目录(或自定义环境变量)中有某种配置文件告诉它使用哪个位置运行外部二进制文件,这不是更好吗?     
我认为最好的方法是设置一个环境变量并使用
execve()
来运行二进制文件。大概你可以设置
PATH
然后
execve()
一个shell,它将使用PATH来查找可执行文件的副本。相当于库的是将
LD_LIBRARY_PATH
execve()
设置为将此库作为依赖项的二进制文件。 在任何一种情况下,您都不会更改外部环境,只会生成与
execve()
一起使用的修改后的副本。     

要回复问题请先登录注册