尽可能少地制作二进制文件

时间:2011-01-19 10:21:21

标签: c compiler-construction binary

我有一个用C编写的程序,并且也链接到C中的静态库(.a)。如何在不触摸代码的情况下尽可能少地创建这个程序(我可以重新编译它等)?

3 个答案:

答案 0 :(得分:1)

第一个就是将它从调试符号等所有内容中删除。

在Linux上,您可以在终端中使用:

strip myexe

你会看到尺寸大大减少^^

我不是Windows大师,但是如果你使用VS,请使用版本变体。

在每个平台上,不要使用生成调试符号的编译器标志。如果您可以使用优化大小的标记。

当然,如果您使用系统库或常用的已安装库,请使用动态链接的libs(dll)或共享对象(如此)。 libs不会包含在您的可执行文件中。

MY2C

答案 1 :(得分:1)

有许多可执行的打包程序可以满足您的需求。首先,删除像neuro建议的任何符号(如果你有编译的符号),然后使用这些可执行的打包程序之一:http://en.wikipedia.org/wiki/Executable_compression

答案 2 :(得分:0)

如果您使用的是gcc,-Os标志将针对小型可执行文件进行优化。我认为gcc默认会在大多数系统上尝试链接到共享库,但您可能也想查看它。