我有一个用C编写的程序,并且也链接到C中的静态库(.a)。如何在不触摸代码的情况下尽可能少地创建这个程序(我可以重新编译它等)?
答案 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默认会在大多数系统上尝试链接到共享库,但您可能也想查看它。