我有一个不太大的项目。使用Visual Studio的C ++编译器,可执行文件是100 + KB。但是对于mingw GCC来说,它可以达到500+ KB。同样的事情发生在Linux上。这是发布版本。对于调试构建,GCC产生1.4MB而VS的C ++编译器仅产生400 + KB。导致这种巨大差异的原因是什么?它与静态/动态链接有什么关系吗?我该怎么做才能减少GCC产生的可执行文件大小?
答案 0 :(得分:2)
请参阅此页面,了解如何缩小GCC输出大小:http://wiki.wxwidgets.org/Reducing_Executable_Size
答案 1 :(得分:1)
您是否已将-s
标志传递给GCC?
Visual Studio是静态还是动态地与CRT链接? GCC怎么样? VC可能是动态链接(/MD
标志,而不是/MT
),而GCC静态链接(-static-libgcc
标志和otehrs)...尝试使它们保持一致,然后查看是否有区别。
一种方法是检查VC链接的可执行文件是否依赖于msvcr80.dll
(或不同版本),并查看您的GCC链接可执行文件是否依赖于某些mingw
DLL。如果他们这样做,那么他们是动态联系的;如果它们真正独立运行,那么它们就是静态链接的。