我有一个应用程序,使用dlopen()在启动时将.so文件作为插件加载
构建环境在x86硬件上运行,但是正在为另一个平台交叉编译该应用程序.
如果能够(作为自动生成过程的一部分)进行检查以确保在.so文件和应用程序的组合中没有任何未解析的符号,而不必实际部署应用程序,那将是很好的.
在编写脚本以使用nm的输出测试符号之前,我想知道是否有人知道已经执行此操作的实用程序?
编辑1:略微更改了说明-我不仅尝试测试.so中的符号,还尝试结合多个.so和应用程序本身-即.在应用程序加载所有.so之后,是否仍存在未解析的符号.
正如答案中所建议的(感谢Martin诉Löwis和tgamblin),nm可以轻松地识别单个文件中缺少的符号,但是不容易识别那些符号中的哪个已在其他加载的模块中被解析.
解决方法:
理想情况下,跨纳米工具是跨编译器套件的一部分.例如,如果您构建用于交叉编译的GNU binutils,则还将提供一个跨nm(以及交叉objdump).