如何查找链接到同一应用程序的两个库之间的所有符号冲突(引用和未引用的符号)?
如何在 gcc 中的链接时将静态库的所有符号强制链接到应用程序?
我试图通过链接两个静态库来创建一个应用程序。这两个库可能有一些具有相同名称的符号。我想找到所有此类符号并在其中一个库中重命名它们。
但是,我发现取消引用函数被消除了,因此我无法找到所有可能发生冲突的符号。有没有办法强制 gcc 链接两个静态库中的所有符号(引用和未引用),从而找到冲突符号?
或者还有其他方法可以解决吗?
How to forcefully link all symbols of a static library to an application at link time in gcc?
I am trying to create an application by linking two static libraries. Both these libraries may have some symbols which may have the same name. I want to find all such symbols and rename them in one of the libraries.
But, I find that unreferences functions are eliminated and hence I am unable to find all the symbols which may be colliding. Is there a way to force gcc to link all symbols (referenced and unreferenced) from both the static libs thereby finding colliding symbols?
Or is there any other way to go about it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
nm
命令吗(链接)每个图书馆?nm
应该列出所有符号,然后您可以比较每个库的nm
的输出。Could you just use the
nm
command (link) on each library?nm
should list all the symbols and then you can just compare the output ofnm
for each library.