3

可能重复:
GCC C++“Hello World”程序 -> .exe 在 Windows 上编译时有 500kb 大。我怎样才能减小它的大小?

我刚刚开始阅读一些 C++ 在线教程,第一课是 Hello World 程序。当我将程序编译为可执行文件时,即使它只是一个简单的 Hello World 控制台程序,大小也超过 400kb。应该这么大吗?如果不是,为什么会这样?难道我做错了什么?

这是来源:

#include <iostream>
using namespace std;
int main()
{
    cout<<"Hello World";
    cin.get();
}

任何帮助将不胜感激。谢谢

4

5 回答 5

7

静态链接 C 和/或 C++ 运行时可以大大增加大小。此外,编译程序以包含调试信息可能会增加大小。

于 2012-06-11T13:36:15.210 回答
4

这几乎可以肯定是因为您创建了一个静态可执行文件,即一个可以独立运行且不依赖运行时库的可执行文件。有关如何避免这种情况,请参阅编译器/链接器的文档。

编辑:

从您的代码中,动态链接的可执行文件(Linux 上的 gcc 4.3.2)得到 13540 个字节,而静态链接的可执行文件得到 6.7Mb。

于 2012-06-11T13:39:28.413 回答
2

它可能与调试信息有关。如果你去掉它(通过在 Visual Studio 中构建发布模式,或者strip在 Linux 中使用命令),它会小得多。

于 2012-06-11T13:37:08.297 回答
0

不要链接你的应用程序静态。试着让它充满活力。

于 2012-06-11T13:37:46.533 回答
0

在调试模式下构建将编译和链接未以任何方式优化的代码(速度/大小),最终会得到包含调试版本的系统库的臃肿 exec。

如果您切换到发布模式,编译器和链接器可以优化为仅使用它们在最终 exec 中所需的功能,并使用它们的发布版本。这样,如果您选择了优化空间,那么您最终将“希望”得到一个较小的执行程序。

于 2012-06-11T13:40:20.813 回答