2016-05-08 12 views
0

Windows環境でMingwコンパイラを使用しています。このフラグを持つiostreamでhello worldプログラムをコンパイルすると、g++ hello.cpp -static -sの出力は967 kbです。 g++ hello.cpp -sを使用すると16 KBの出力が得られますが、libgcc_s_dw2-1.dllには他のコンピュータのエラーが表示されません。許容可能なファイルサイズでビルドするにはどうすればよいですか?C++ - 静的フラグが実行可能になりすぎます

+1

実際のライブラリ 'libgcc_s_dw2-1.dll'は両方のバイナリよりはるかに大きなサイズになります。したがって、共有ライブラリと一緒に実行可能ファイルを配布すると、実際には合計サイズが増えます。これは、特定のシステム上で共有ライブラリーを使用している場合が多いことを除いては同じです。また967kbはなぜ受け入れられないのですか?それは1メガバイト未満ですか?ほんのわずかな量のストレージである今日のハーウェアとはどういうことでしょうか? – silvergasp

+1

GCCの[documentation](https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/Link-Options.html#Link-Options)から、 '-static'キーワードは共有とのリンクを防ぎますライブラリ。つまり、ライブラリが静的にリンクされ(ライブラリはプログラムの一部になります)、プログラムのサイズが大きくなります。 –

答えて

0

stripを使用して実行可能ファイルからデバッグ情報を取り除くことで、サイズをいくらか小さくすることができますが、直接デバッグするのはやや難しくなります。

関連する問題