【发布时间】:2010-09-21 04:47:38
【问题描述】:
我有一个应用程序在启动时将 .so 文件作为插件加载,使用 dlopen()
构建环境在 x86 硬件上运行,但正在为另一个平台交叉编译应用程序。
如果我可以(作为自动构建过程的一部分)进行检查以确保 .so 文件和应用程序的组合中没有任何未解析的符号,而无需实际部署,那就太好了应用程序。
在我编写脚本来使用nm 的输出测试符号之前,我想知道是否有人知道已经这样做的实用程序?
编辑 1:稍微更改了描述 - 我不只是尝试测试 .so 中的符号,而是尝试结合几个 .so 和应用程序本身 - 即。在应用程序加载完所有的.so之后是否还有未解析的符号。
正如答案中所建议的那样(感谢 Martin v. Löwis 和 tgamblin),nm 将很容易识别单个文件中缺少的符号,但不容易识别其中哪些符号已在另一个加载的文件中得到解决模块。
【问题讨论】:
-
也许您可以为此使用递归 ldd。我将其添加到下面的答案中。
标签: linux cross-platform shared-libraries testing symbols