【发布时间】:2011-01-11 19:58:20
【问题描述】:
Linux:有没有办法编辑已编译的共享库?
具体来说,我正在搜索如何在已编译的二进制共享库上添加DT_SYMBOLIC flag?
这就是我问这个的原因:
我们的应用由
组成- 我们自己的库(静态 libXXX.a)
- 一些第 3 方库(仅限二进制共享库 libYYY.so)
到目前为止,该应用程序一切正常。
现在我已经用共享库版本 (libXXX.so) 替换了我们自己的 static* libXXX.a 库。
一切编译和链接都很好。
但是当我现在运行应用程序时,它会启动并执行大量预期的处理 - 然后它在中途某处崩溃。 gdb 回溯显示崩溃发生在某些第 3 方共享库中。
我在 SOF 上搜索了一下,发现了一篇有趣的文章here。
我指的提示是
... add the DT_SYMBOLIC flag to the dynamic section ...
虽然我怀疑它是否真的有帮助,但我认为它可能值得一试。
有什么想法可以在已编译/链接的共享库上添加DT_SYMBOLIC flag 吗?
环境:debian lenny 64bit with g++ v4.2.4 and binutils v20.
编辑:在 solaris 上有一个名为 elfedit 的程序。 linux有类似的吗?
【问题讨论】:
标签: linux g++ shared-libraries ld binutils