Code :: Blocks IDEで提供されるMinGWからg ++(バージョン4.9.2)を使用している間、 "hello 、世界!プログラム。私はCode :: Blocksの "inside"からコンパイルされるのとまったく同じコンパイルオプションを使用します(mingw32-g ++ .exe -Wall -g hello.cpp -o hello.exe、とにかく、コードからコピーします) :: Blocks log window)、デバッグ対象の場合は約70KB、リリースの場合は50KBを生成したのとは異なり、これは非常に大きな出力を作り続けます。g ++とMakefileを使用してC++をコンパイルするときに非常に巨大な実行可能ファイルのサイズ
他にみんな同様の問題を抱えていましたか?
[編集]私のプロジェクト(Makefilesの目的のためだけに作成)は、main.cppとfun.cpp(ヘッダなし)の2つのファイルで構成されています。ここではmain.cppにある:
#include<iostream>
using namespace std;
void fun(void);
int main()
{
cout<<"Hello Make!"<<endl;
fun();
return 0;
}
、ここfun.cppです:
#include<iostream>
using namespace std;
void fun()
{
cout<<"Hello from The Module!"<<endl;
}
そして最後に、これは私のMakefileです:
CC = mingw32-g++
CFLAGS = -Wall -Os -lto
all: main.o fun.o
${CC} -o hello.exe $^
relink:
mingw32-g++ -o hello.exe hello.o fun.o
main.o: main.cpp
mingw32-g++ ${CFLAGS} -c main.cpp -o [email protected]
fun.o: fun.cpp
mingw32-g++ ${CFLAGS} -c fun.cpp -o [email protected]
clean:
del *.o
コードの下に、この "プロジェクト" をコンパイルします::ブロック私は次を取得する log
メイクファイルを使用すると、ファイルは1024KB大: (print screen)
binutilsから 'strip'ユーティリティを使ってみましたか?それはあなたのツールチェーンに含まれるべきです。大きな実行可能ファイルはlibstdC++に静的にリンクされていますか? –
こんにちは、歓迎、StackOverflowへ。ヘルプページ、特に[ここではどのトピックについて聞かせていただけますか?](http://stackoverflow.com/help/on-topic)と[質問しないでください。」](http://stackoverflow.com/help/dont-ask)。さらに重要なことは、[Stack Overflow question checklist](http://meta.stackexchange.com/q/156810/204922)をお読みください。また、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)についても知りたいことがあります。 – herrbischoff
objまたはexeファイルにあるものを 'objdump'でチェックアウトすることができます。例えば、 'objdump -x hello.exe'を実行すると、exeファイル(各セクションのサイズがわかります)のさまざまなセクションをチェックアウトし、' objdump -d hello.exe'を使って逆アセンブラを実行することができますhello.exe。 – geza