使用 Code 块构建的 Exe 几乎比使用 Visual Studio 构建的相同代码大 57 倍

发布于 2024-10-17 08:04:37 字数 266 浏览 5 评论 0原文

此代码:

#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

放手` 2024-10-24 08:04:37

这是因为 c++ 标准库是由 g++ 静态链接的,而 VS 则是动态链接的。在 cygwin 下使用 gcc 进行快速检查,得到的大小大致相同,并且生成的 exe 仅导入一些 C 函数。

#include <stdio.h>
int main() {
  printf("Hello world\n");
  return 0
}

另一方面,该应用程序在 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.

#include <stdio.h>
int main() {
  printf("Hello world\n");
  return 0
}

On the other hand, this application compiled to the same minimal EXE under gcc, as it does not require any c++ functionality.

彩扇题诗 2024-10-24 08:04:37

你是对的,gcc 的可执行文件显然更大,在你的例子中比 vc++ 构建的可执行文件大 57 倍。

主要原因是用
GCC 不需要任何外部
依赖项在创建时运行
使用 VS2010 至少需要它的运行时
文件存在于系统上。

例如,假设您在某个没有安装 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++.

The main reason is the one made with
GCC won't require any external
dependencies to run while the one made
with VS2010 would need at least its runtime
files to be present on the system.

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 :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文