为什么我的C ++可执行文件如此之大?

时间:2012-06-11 13:33:43

标签: c++ size

  

可能重复:
  GCC C++ “Hello World” program -> .exe is 500kb big when compiled on Windows. How can I reduce its size?

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

以下是来源:

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

真的很感激任何帮助。感谢

5 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

可能是调试信息。如果你将其剥离(通过在Visual Studio中以发布模式构建,或在Linux中使用strip命令),它将会小得多。

答案 2 :(得分:1)

不要链接你app静态。尽量让它变得动态。

答案 3 :(得分:1)

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

编辑:

从代码中我得到13540字节的动态链接可执行文件(linux上为gcc 4.3.2),但静态链接可执行文件为6.7Mb。

答案 4 :(得分:0)

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

如果切换到发布模式,编译器和链接器可以优化为仅使用最终exec中所需的函数,并使用它们的发行版本。 这样,如果你选择了优化空间,你最终会“希望”成为一个较小的执行官。