2011-01-26 58 views
1

我配置gcc作爲如下:在gcc(mingw)配置過程中,我應該使用哪些選項來構建libstdC++。dll而不調試信息?

../configure 前綴=/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- check --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

我已經全部優化了,exc ept libstdC++ - 6.dll。它的大小是5Mb!
因此...在gcc(mingw)配置過程中,我應該使用哪些選項來構建libstdC++。dll而不調試信息?

注:
我需要調試和發佈的libstdC++版本,所以我用
--enable-libstdcxx調試 - 建立獨立的調試庫除了什麼是正常構建。
此標誌使得另一個libstdC++ - 6.dll(somwhere在lib目錄中),這比dir中的dll更大。

+0

你應該可以在事後調用`strip`命令(保存原始庫並閱讀文檔,可能需要一些嘗試才能獲得正確的選項)。 – 2014-12-28 18:21:01

+0

僅供參考:我沒有看到有關`BOOT_CPPFLAGS`或`BOOT_CXXFLAGS`的任何官方文檔 - 只有`BOOT_CFLAGS`。 – kevinarpe 2015-06-09 00:57:04

回答

0

您應該將strip選項傳遞給鏈接器,而不是編譯器(-s)。對於編譯器,您應該通過「-g -O0」進行調試構建,這意味着包含調試信息+沒有任何優化的stright代碼生成(最後一個是用於解讀disasm代碼,它使得東西更清晰)。因此,請嘗試添加LDFLAGS環境變量-s選項以獲得構建時間。

作爲替代方案,您可以使用「strip」程序(MSYS的一部分)從可執行文件和/或庫二進制文件中去除所有調試信息。

相關問題