我一直在研究非常大的 C++ 项目代码库。大约有 2k 个文件,包含大约 200k 行代码。代码包含大量模板的使用 代码中有很多内联 目前使用带有 O2 选项的 clang++ 进行编译 最终的可执行文件大小约为 50 MB
出于某种原因,我想进一步减小二进制大小。已经采取的步骤 1> 尽可能用非模板代码替换模板 2> 将 XML 库从 xerces 替换为 expat
欢迎在这方面提出任何建议
以下方法通常用于减小程序的大小,
使用您的编译器特定技术来减小大小。
编译使用gcc -S program.c
以获取汇编程序文件。您现在可以执行基于汇编程序的空间优化。
减少 C 中全局变量的数量。
使用简单的算法,而不是在执行时间上给您带来非常小的变化的复杂算法。例如,如果列表中的元素数量不是很大,则使用bubble sort
代替。Merge sort
删除只使用一次或两次的简单功能。
消除死代码。许多大型项目中经常有一些。
请注意程序中包含的库函数。
strip
以删除调试信息(注意,您也可以保留未剥离的文件,以防您以后需要调试信息)。UPX是减少可执行文件大小的好工具。它支持许多平台和可执行格式。
可执行文件在启动时解压缩,执行此操作的代码包含在可执行文件本身中。性能损失很小。