【发布时间】:2020-09-21 14:23:17
【问题描述】:
我的库 A 依赖于外部库 B。当我在 A.so 上使用 ld 时,我看到 B 链接为 B.so.10,但在我的计算机上链接是:
B.so -> B.so.10
B.so.10 -> B.so.10.5
我正在尝试创建一个指向 JUST B.so 的链接,并使用符号链接来加载要加载的版本。我对 A.so 进行了十六进制编辑,并用 B.so 替换了 B.so.10 的所有发现,并且 ld 链接它就好了,但是当我尝试 dlopen A.so 时,它说:'加载 A.so 时出错:版本 B。所以找不到'我已经阅读了有关符号版本控制等的信息,但老实说不知道在哪里寻找会导致问题的原因?
我检查了 readelf 并将未编辑的版本与我的进行了比较,除了 SO 名称之外,我在差异中看不到任何内容。 Elfedit 也不起作用,只是将二进制文件变成了垃圾数据。
【问题讨论】:
标签: linux hex shared-libraries elf dlopen