2011-01-26 7 views
1

次のように私はGCCを構成:デバッグ情報なしでlibstdC++。dllをビルドするためにgcc(mingw)の設定時に使用するオプションは何ですか?

../configure --prefix =/C/mbuildの/ --enable共有=のlibstdC++ --enable-スレッドを解放--enable-バージョン固有-runtime-libs --enable-languages = c、C++ --with-dwarf2 --disable-sjlj-exceptions --disable-win32-registry --disable-werror --disable-nls --disable-multilib --with -gmp =/c/mbuild/release --with-ppl =/c/mbuild/release --disable-ppl-version-check --with-cloog =/c/mbuild/release --disable-cloog-version- --with-mpfr =/c/mbuild/release --with-mpc =/c/mbuild/release --enable-libgomp --with-libiconv-prefix =/c/mbuild/release --enable- libstdcxx-debug --enable-cxx-flags = '-s -O2' * --with-boot-ldflags = '-s' * --with-boot-cflags = '-s -O2' --with-boot-cxxflags = ' - s -O2' &> config .my.log

とビルド:

作る-j4 BOOT_CFLAGS = ' - sの-O2' BOOT_CPPFLAGS = ' - sの-O2' &> make.my.log

私はすべてを最適化しました。 ept libstdC++ - 6.dll。サイズは5Mbです!
... gcc(mingw)の設定時にlibstdC++。dllをビルドする際に、どのようなオプションを使用すればよいですか?

注:
私はデバッグが必要とのlibstdC++のバージョンをリリース、私は
--enable-libstdcxx-デバッグを使用しています - 正常に構築されているものに加えで別々のデバッグ・ライブラリをビルドします。
このフラグは、binディレクトリ内のdllより大きい別のlibstdC++ - 6.dll(libディレクトリ内のsomwhere)を作成します。

+0

事実の後に 'strip'コマンドを呼び出すことができるはずです(元のlibを保存してドキュメントを読んでください。正しいオプションを取得するには数回かかるかもしれません)。 –

+0

FYI: 'BOOT_CPPFLAGS'または' BOOT_CXXFLAGS' - 'BOOT_CFLAGS'のみの公式のドキュメントは見たことがありません。 – kevinarpe

答えて

0

コンパイラ(-s)ではなく、リンカにstripオプションを渡す必要があります。そしてコンパイラには、デバッグビルドに "-g -O0"を渡す必要があります。これは、デバッグ情報+最適化なしのstrightコード生成を含むことを意味します(最後のコードは、災害コードを読む場合には、ですから、ビルド時にLDFLAGS環境変数-sオプションを追加してみてください。

代わりに、実行可能ファイルおよび/またはライブラリのバイナリファイルからすべてのデバッグ情報を削除するために、 "strip"プログラム(MSYSの一部)を使用することもできます。

+0

さらに注意すると、設定で「-with-boot-ldflags = '-s'」オプションが表示されます。それは役に立たない。私は "-g"がトリックをすると思いますが、残念ながら私はこれをテストすることはできません。問題は実際のものではありません。しかし、答えに感謝します。 – hoxnox

+0

私はここで推測していますが、このバイナリ脂肪は暗黙の静的リンケージに起因する可能性がありますか? –

関連する問題