如何减小MinGW g ++编译器生成的可执行文件的大小?

时间:2011-11-01 21:40:38

标签: c++ optimization mingw executable

我有一个简单的“Hello world”C ++程序,在Win XP下由MinGW g ++编译器编译为500kB可执行文件。 有人说这是由 iostream 库和 libstdc ++。dll 的静态链接引起的。

使用 -s 链接器选项有点帮助(减小50%的大小),但我只满足于< 10kB可执行文件。有没有办法如何使用MinGW编译器实现这一目标?便携性对我来说不是一个大问题。

是否可以使用动态链接将libstdc ++。dll与可执行文件一起复制?如果是这样,如何实现这一目标?


解决了:我使用的是MinGW 3.4。现在我更新到最新的MinGW 4.6,尺寸减少了90%到50kB, -s 选项甚至减少到9kB,这已经足够了。无论如何 - 感谢大家的帮助。在这里你得到我的结果

使用iostream的C ++ Hello World 程序

MinGW | no options | -s option
------------------------------
3.4   | 500kB      | 286 kB
4.6   | 50kB       |   9 kB

4 个答案:

答案 0 :(得分:12)

要使用的标志:

  • -s就像你一直在做剥离符号一样
  • -lstdc++_s指定与libstdc++.dll
  • 的动态关联
  • -Os优化二进制文件的大小。

默认情况下,在Windows上使用静态链接libstdc++.a

请注意,lstdc++_s标志仅在MinGW中使用GCC> 4.4,我相信。

答案 1 :(得分:5)

尝试stripUPX

答案 2 :(得分:2)

使用-Os标志可能有所帮助。这样可以优化尺寸。

答案 3 :(得分:0)

您应该使用-O进行优化。将“-O {level}”添加到编译器args中,它将针对速度或大小进行优化。检查编译器的文档。

您也可以启用调试符号。剥离它们也会使它变小。