我有一个用 g++ 编译的可执行文件,它链接了大约 50 个静态库(在一堆系统库之上)。我想知道这些库中的哪些方法正在被使用,或者更重要的是哪些方法永远不会被调用。
是否有提供此功能的工具和/或编译器标志?
您可以nm
在 Linux\UNIX 中使用工具(至少在使用 -g 编译时)
由于您使用的是静态库,因此只有库中的引用方法才会添加到您的可执行文件中
用法如:
nm <your executable with debug info>
您也可以尝试阅读手册页;
man nm
不确定您的确切含义,但如果您想获取未引用的函数,则有一些编译器选项。
-ffunction-sections 将告诉编译器将每个函数放入 obj 文件中自己的部分。
然后在链接时--gc-sections 和--print-gc-sections将对未使用的部分(函数)进行垃圾收集并列出结果。
您可能希望构建所有静态库以获得完整列表。