我修改了一个包含大量文件和函数的庞大C ++项目。问题是,现在有大量无用的文件,包括全局变量和函数。用手去除它们会很痛苦。有没有像编译器那样分析代码的工具并删除所有未使用的东西?我更喜欢unix的工具。另外,只删除上面提到的一个或几个无用组件的方法会有所帮助。
答案 0 :(得分:2)
如果您不介意每次构建系统时链接器都会这样做,那么GNU工具链本身有几个可以优化代码化的功能。在C ++中总是存在一个问题,那就是"未使用的代码" (因为使用指针和强制转换会误导任何工具)。
所以你最好的选择是Gold linker(Replacing ld with gold - any experience?)和以下选项:
-gc-sections
:GCC --gc-sections and finding symbol dependencies --icf
:GCC(/Clang): Merging functions with identical instructions (COMDAT folding) -Os
:Process for reducing the size of a executable "更大"方法是静态代码分析器/代码重构工具(How can I know which parts in the code are never used?),然后像Boost这样的某些库会附带their own tools来减少文件数。