如何检测二进制/库中的未定义符号?

Posted

技术标签:

【中文标题】如何检测二进制/库中的未定义符号?【英文标题】:How can I detect undefined symbols in a binary/library? 【发布时间】:2013-11-28 16:58:52 【问题描述】:

是否有一个工具可以接受二进制文件(可执行文件)或库,并且还可以查看任何共享库依赖项,查找并列出任何未定义的符号(即使它们未使用)?有什么实用的方法可以找到这个吗?

【问题讨论】:

尝试将其链接到可执行文件中? 可执行文件可以引用链接时忘记的共享库中的符号 【参考方案1】:

如果使用 *nix,并且符号没有被剥离,使用 'nm' 会有所帮助。

# nm lib-or-binary-name
U strcmp@@GLIBC_2.2.5

“U”表示未定义,如果某处满足,会在@后面注明。

【讨论】:

太好了,这就是我要找的,谢谢!顺便说一句,-u 选项已经为您提供了未定义的符号,而-C 直接解开了 我发现除了'U'还有'B' 'T' 'V','B' 'T' 'V'是什么意思?非常感谢。

以上是关于如何检测二进制/库中的未定义符号?的主要内容,如果未能解决你的问题,请参考以下文章

归档时应用程序获取“架构 armv7 的未定义符号”,除非我不剥离库中的链接产品

XCode 5 - 架构 armv7 的未定义符号:

嵌入式 C/C++:现有符号的未定义引用

是否通过强制转换为有符号的未定义行为来检测无符号环绕?

如何修复符号查找错误:集群环境中的未定义符号错误

动态加载库的未定义符号“typeinfo”