使用 Code 块构建的 Exe 几乎比使用 Visual Studio 构建的相同代码大 57 倍
此代码:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!\n";
return 0;
}
当编译时,GCC 4.4.1 中的 Code::Blocks 的大小为 457KB,而 VS2010 中的大小仅为 8KB(8 个)。两个编译器都针对大小进行了优化。
有谁知道为什么会有这样的差异?
This code:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!\n";
return 0;
}
when comiled give size 457KB in Code::Blocks with GCC 4.4.1 and only 8KB (eight) in VS2010. Both compilers optimized for size.
Anyone knows why such a difference?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是因为 c++ 标准库是由 g++ 静态链接的,而 VS 则是动态链接的。在 cygwin 下使用 gcc 进行快速检查,得到的大小大致相同,并且生成的 exe 仅导入一些 C 函数。
另一方面,该应用程序在 gcc 下编译为相同的最小 EXE,因为它不需要任何 C++ 功能。
This is due to the c++ standard library being linked statically by g++, whereas VS will link it dynamically. A quick check using gcc under cygwin gives me approximately same sizes, and the resulting exe only import some C functions.
On the other hand, this application compiled to the same minimal EXE under gcc, as it does not require any c++ functionality.
你是对的,gcc 的可执行文件显然更大,在你的例子中比 vc++ 构建的可执行文件大 57 倍。
例如,假设您在某个没有安装 vs2010 的朋友的计算机上尝试它,不如尝试像 XP 这样的早期操作系统,甚至没有机会安装 VS2010 运行时。
用GCC构建的不会有问题,而用VS2010构建的会抛出缺少运行时文件(依赖)的错误。
希望这对您有所帮助,如果没有帮助或者您有任何其他问题,请随时询问,我很乐意提供帮助:)
You are right, the executable by gcc is obviously larger, in your case 57 times larger than that built by vc++.
For instance, say you try it on some friend's computer with no vs2010 installed, rather try earlier OS like XP with no chance of having VS2010 runtimes even.
The one built with GCC will have no problems while the one made with VS2010 would throw an error of missing runtime file ( dependency ).
Hope this helped, if it didn't or you have any other question in your mind, feel free to ask and I'll be glad to help :)