我有一个简单的“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
答案 0 :(得分:12)
要使用的标志:
-s
就像你一直在做剥离符号一样-lstdc++_s
指定与libstdc++.dll
-Os
优化二进制文件的大小。默认情况下,在Windows上使用静态链接libstdc++.a
。
请注意,lstdc++_s
标志仅在MinGW中使用GCC> 4.4,我相信。
答案 1 :(得分:5)
答案 2 :(得分:2)
使用-Os标志可能有所帮助。这样可以优化尺寸。
答案 3 :(得分:0)
您应该使用-O进行优化。将“-O {level}”添加到编译器args中,它将针对速度或大小进行优化。检查编译器的文档。
您也可以启用调试符号。剥离它们也会使它变小。