使用RPATH但不使用RUNPATH?
此页面- http://labs.qt.nokia.com/2011/10/28/rpath-and-
runpath/
-说,大约为了在ld.so库搜索:
Unless loading object has RUNPATH: RPATH of the loading object,
then the RPATH of its loader (unless it has a RUNPATH), ...,
until the end of the chain, which is either the executable
or an object loaded by dlopen
Unless executable has RUNPATH:
RPATH of the executable
LD_LIBRARY_PATH
RUNPATH of the loading object
ld.so.cache
default dirs
然后建议:
运送二进制文件时,请使用RPATH而不是RUNPATH或确保在运行它们之前已设置LD_LIBRARY_PATH。
那么,RPATH
with的使用RUNPATH
是不好的,因为RUNPATH
kind-
of会取消,RPATH
因此间接动态加载无法按预期工作?但是,为什么然后RPATH
不赞成RUNPATH
呢?
有人可以解释情况吗?
回答:
运送二进制文件时,最好为用户提供使二进制文件适应其自身系统细节的方法,其中包括调整库搜索路径。
用户通常可以调整LD_LIBRARY_PATH
和/etc/ld.so.conf
,两者的优先级均低于DT_RPATH
,即您不能覆盖二进制文件中的硬编码内容,而如果使用DT_RUNPATH
,则用户可以使用进行覆盖LD_LIBRARY_PATH
。
(FWIW,我认为ld.so.conf
也应该优先于DT_RUNPATH
,但无论如何,至少我们有LD_LIBRARY_PATH
)。
另外,我强烈不同意以上使用的建议DT_RPATH
。IMO,最好DT_RPATH
不要DT_RUNPATH
在出厂的二进制文件中使用。
除非
您附带了所有依赖库和可执行文件,并希望确保在安装后使用JustWork(tm),在这种情况下请使用DT_RPATH
。
以上是 使用RPATH但不使用RUNPATH? 的全部内容, 来源链接: utcz.com/qa/410534.html