我按如下方式配置了gcc:
../配置 --prefix = / c / mbuild / release --enable-shared = libstdc ++ --enable-threads --enable-version-specific-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' * < strong> - with-boot-cflags =' - s -O2'--with-boot-cxxflags =' - s -O2 '&amp;&gt; config.my.log
并建立:
make -j4 BOOT_CFLAGS =' - s -O2' BOOT_CPPFLAGS =' - s -O2'&amp;&gt; make.my.log
除了libstdc ++ - 6.dll之外,我已经完成了所有优化。它的大小是5Mb!
那么......在gcc(mingw)配置中我应该使用哪些选项来构建没有调试信息的libstdc ++。dll?
注意:
我需要libstdc ++的调试和发布版本,所以我正在使用
- enable-libstdcxx-debug - 另外构建 的单独调试库到正常构建的内容。
这个标志使另一个libstdc ++ - 6.dll(lib目录中的somwhere),比bin目录中的dll大。
答案 0 :(得分:0)
您应该将strip选项传递给链接器,而不是编译器(-s)。对于编译器,你应该传递“-g -O0”进行调试构建,这意味着包括调试信息+直接代码生成而不进行任何优化(最后一个是为了你读取disasm代码,它使事情更清晰)。因此,尝试在构建时添加LDFLAGS环境变量-s选项。
作为替代方案,您可以使用“strip”程序(MSYS的一部分)从可执行文件和/或库二进制文件中删除所有调试信息。