我有一个不是很大的项目。使用Visual Studio的C++编译器,可执行文件为100 + KB。但对于Gingw GCC,它可以达到500+ KB。同样的事情发生在Linux上。这是为了发布版本。对于调试构建,GCC产生1.4MB,而VS的C++编译器只产生400 + KB。造成如此巨大差异的原因是什么?它与静态/动态链接有什么关系?我能做些什么来减少GCC产生的可执行文件大小?为什么GCC与VCC相比产生巨大的可执行文件?
回答
参见如何收缩GCC输出大小此页:http://wiki.wxwidgets.org/Reducing_Executable_Size
谢谢! strip --stril-all将尺寸缩小了一半。 – neuron
都通过了
-s
标志GCC?是Visual Studio中与CRT连接静态或动态? GCC如何? VC很可能是动态链接的(
/MD
标志,而不是/MT
),而GCC是静态链接的(-static-libgcc
标志和otehrs)...尝试使它们保持一致,然后查看是否有区别。一种方式来告诉是检查,如果你的VC-链接的可执行取决于
msvcr80.dll
(或不同的版本),看看你的GCC链接可执行取决于一些mingw
DLL。如果他们这样做,那么他们是动态链接的;如果他们真的独立运行,那么他们是静态链接的。
我现在无法检查我的VC构建标志。尽管我尝试了-shared-libgcc。它没有任何影响。 – neuron
- 1. Opa产生的可执行文件是什么?
- 2. 为什么Eclipse maven无缘无故产生巨大的.cfs文件?
- 3. 为什么Chrome会产生不必要的巨大利润?
- 4. 可执行文件从cx_Freeze产生的
- 5. VS2008中的巨大OBJ文件C++编译与VS6相比较
- 6. 为什么Visual Studio/CLR会产生一个“不好”的可执行文件?
- 7. 继续,我想知道为什么它产生了巨大的文件,而不应该产生?
- 8. 与实体框架并行。与启动多个可执行文件相比,性能很显着,为什么?
- 9. 与使用python的巨大文件B相比,从巨大文件A中找到独特行的最快方法是什么?
- 10. 为什么我的C++输出可执行文件太大了?
- 11. 为什么可执行文件不可执行?
- 12. 什么是在网站上产生巨大的差距?
- 13. 将元数据添加到gcc生成的可执行文件
- 14. 什么产生DataSet.designer.vb文件
- 15. 比较巨大的XML文件
- 16. ld连接器脚本产生巨大的二进制文件
- 17. 为什么当我“运行”Xcode产生一个更大的文件?
- 18. 是否有可能生产独立的haskell可执行文件
- 19. 为什么在执行风暴拓扑与执行风暴之间存在巨大的延迟
- 20. 为什么Delphi 2009 IDE生成的可执行文件与命令行上生成的可执行文件不同?
- 21. -fPIE(“与位置无关的可执行文件)选项(GCC,LD)
- 22. 为什么Wordpress会创建一个巨大的error_log文件?
- 23. 什么会影响Delphi可执行文件的大小?
- 24. g ++为windows生成可执行文件
- 25. 为什么执行会产生错误的输出?
- 26. BinaryReader.ReadInt32结果与输入文件相比意外,为什么?
- 27. 如何在与gcc中的共享库链接时生成可执行文件的位置相关代码?
- 28. Dynamics CRM中2016产生巨大的Excel文件进行营销列表
- 29. 为什么产生itertools.islice产生不可用的嵌套对象?
- 30. C程序可以在与生成相同的生成文件中执行吗?
Linux上的Visual C++? – Mehrdad
如果你使用MS Studio动态链接,并且使用GCC静态链接,可能就是这样。 – stnr