gpt4 book ai didi

linux - 共享对象文件的 rpath

转载 作者:IT王子 更新时间:2023-10-29 00:21:08 26 4
gpt4 key购买 nike

可执行文件的 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 适用于共享对象吗?

最佳答案

do shared object files themselves also have statically-compiled rpaths

它们可能(或可能不)取决于它们是否与 -Wl,-rpath=... 选项链接。

This error indicates to me that the actually library itself - mylib.so, has an statically compiled rpath.

错误消息根本没有这么说。你从哪里得到这个想法的?

如果你想知道mylib.so是否有DT_RPATH,这样做:

readelf -d mylib.so | grep 'R.*PATH'  # could also have RUNPATH

My understanding was that rpath only applied to executables, not shared objects. So does rpath also apply to shared objects?

您的理解不正确,RPATH(和RUNPATH)同样适用于共享对象。

关于linux - 共享对象文件的 rpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30379996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com