我修改了一个包含大量文件和函数的大型 C++ 项目。问题是,现在有大量无用的文件、包含文件、全局变量和函数。用手去除它们会很痛苦。是否有一种工具可以像编译器一样分析代码并删除所有未使用的内容?我更喜欢unix 的工具。另外,一种仅删除上面提到的一个或几个无用组件的方法也会有所帮助。
如果您不介意链接器在每次构建系统时执行此操作,GNU 工具链本身有多种可能性可以优化代码大小。在 C++ 中始终存在这样的问题:什么是真正的“未使用的代码”(因为使用指针和强制转换可能会误导任何工具)。
所以你最好的选择是黄金链接器 http://en.wikipedia.org/wiki/Gold_%28linker%29 (用黄金代替 ld - 有什么经验吗? https://stackoverflow.com/questions/3476093/replacing-ld-with-gold-any-experience)和以下选项:
- 删除未使用的部分
-gc-sections
: GCC --gc-sections 和查找符号依赖关系 https://stackoverflow.com/questions/24649504/gcc-gc-sections-and-finding-symbol-dependencies
- 说明书折叠
--icf
: GCC(/Clang):合并具有相同指令的函数(COMDAT 折叠) https://stackoverflow.com/questions/15168924/gcc-clang-merging-functions-with-identical-instructions-comdat-folding
- 优化尺寸
-Os
: 减少可执行文件大小的过程 https://stackoverflow.com/questions/200292/process-for-reducing-the-size-of-a-executable
“更大”的方法是静态代码分析器/代码重构工具(我如何知道代码中的哪些部分从未被使用过? https://stackoverflow.com/questions/4813947/how-can-i-know-which-parts-in-the-code-are-never-used)然后某些库(例如 Boost)确实附带了他们自己的工具 http://www.boost.org/doc/libs/1_58_0/tools/bcp/doc/html/index.html以减少文件数量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)