0

我有一个用 g++ 编译的可执行文件,它链接了大约 50 个静态库(在一堆系统库之上)。我想知道这些库中的哪些方法正在被使用,或者更重要的是哪些方法永远不会被调用。

是否有提供此功能的工具和/或编译器标志?

4

2 回答 2

0

您可以nm在 Linux\UNIX 中使用工具(至少在使用 -g 编译时)

由于您使用的是静态库,因此只有库中的引用方法才会添加到您的可执行文件中

用法如:

nm <your executable with debug info>

您也可以尝试阅读手册页;

man nm
于 2013-10-23T13:35:52.010 回答
0

不确定您的确切含义,但如果您想获取未引用的函数,则有一些编译器选项。

-ffunction-sections 将告诉编译器将每个函数放入 obj 文件中自己的部分。

然后在链接时--gc-sections--print-gc-sections将对未使用的部分(函数)进行垃圾收集并列出结果。

您可能希望构建所有静态库以获得完整列表。

于 2013-10-23T14:49:18.973 回答