可执行文件的rpath
指定一个或多个目录,以便在运行时在其中查找共享对象。
我的问题是-共享对象文件本身也具有静态编译的rpath
吗?
与共享库链接时,我最近收到了运行时错误:
./example: /opt/swt/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./mylib.so)
此错误向我表明,实际的库本身-
mylib.so
具有静态编译的rpath
。我的理解是
rpath
仅适用于可执行文件,不适用于共享对象。那么rpath
是否也适用于共享对象? 最佳答案
它们可能(也可能不)取决于它们是否与-Wl,-rpath=...
选项链接在一起。
该错误消息根本没有说明。你从哪里得到这个主意的?
如果您想知道mylib.so
是否具有DT_RPATH
,请执行以下操作:
readelf -d mylib.so | grep 'R.*PATH' # could also have RUNPATH
您的理解是不正确的,并且
RPATH
(和RUNPATH
)也适用于共享库。关于linux - 共享对象文件的rpath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30379996/