我正在寻找一种方法来检查我的C项目(编译为ELF)是否具有未使用的功能,并找到它们。 这是声明的函数,但在我的代码中没有被调用。
解决方案可以是以下之一:
解决方案不能是以下之一:
gprof
(有些函数需要几天才会被调用,但在代码流中你可以看到它们是最终叫了)谢谢
答案 0 :(得分:1)
最简单的方法是处理项目中的目标文件,而不像链接器那样。除了注意未引用的符号之外,它不需要做任何事情,因此这比编写链接器要容易得多。
名为lorder
的Unix / Linux / Cygwin实用程序可以满足您的需要。
答案 1 :(得分:0)
如果你需要精确,自动或抛光的东西,你需要你的编译器和构建系统来组合并以某种方式为你做。
如果你不需要确切的结果或特别自动或抛光的东西,那么这里有一个非常粗略的近似:它会发现你的所有.c文件中只出现一次的每个单词。
find . -name \*.c -exec cat {} \; \
| tr -s '[[:space:];:,?!.|()-"<>=]' '\n' \
| sort \
| uniq -u
这当然可以通过一百万种方式失败:预处理器技巧,重复函数名称的注释,与注释中使用的常用单词相同的函数等。