3

重複の可能性:
GCC C++「Hello World」プログラム -> .exe は、Windows でコンパイルすると 500 KB の大きさになります。どうすればサイズを小さくできますか?

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 が生成されます。

リリース モードに切り替えると、コンパイラとリンカーは、最終的な実行で必要な関数のみを使用し、リリース バージョンも使用するように最適化できます。そうすれば、スペースの最適化を選択した場合、「うまくいけば」より小さな実行ファイルになります。

于 2012-06-11T13:40:20.813 に答える