我刚开始阅读一些C ++在线教程,第一课是Hello World程序。当我将程序编译为可执行文件时,大小超过400kb,即使它只是一个简单的Hello World控制台程序。应该这么大吗?如果没有,为什么会发生?我做错了吗?
以下是来源:
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello World";
cin.get();
}
真的很感激任何帮助。感谢
答案 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中所需的函数,并使用它们的发行版本。 这样,如果你选择了优化空间,你最终会“希望”成为一个较小的执行官。