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