我的c ++可执行文件实际使用了哪些方法

时间:2013-10-23 12:24:06

标签: c++ g++

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

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

2 个答案:

答案 0 :(得分:0)

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

由于您只使用静态库,因此库中的参考方法将添加到您的可执行文件中

用法如:

nm <your executable with debug info>

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

man nm

答案 1 :(得分:0)

不确定你究竟是什么意思,但是如果你想获得未被引用的函数,那么有一些编译器选项。

<强> -ffunction截面 会告诉编译器将每个函数放入obj文件中的自己的部分。

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

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