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