在gcc(mingw)配置期间,在没有调试信息的情况下,我应该使用哪些选项来构建libstdc++.dll?

在gcc(mingw)配置期间,在没有调试信息的情况下,我应该使用哪些选项来构建libstdc++.dll?,gcc,mingw,Gcc,Mingw,我将gcc配置如下: ../configure -prefix=/c/mbuild/release-enable shared=libstdc++-enable threads-enable版本特定的运行库libs-enable languages=c,禁用C++的SjLJ异常-禁用WI32的注册表-禁用WELS-禁用NLLS禁用多个-与GMP = /C/MuBuff/Office -与PPL=/C/MuBudi/Office -禁用PPL版本检查-与CLUGG=/C/MuBudi/Opvest

我将gcc配置如下:

../configure -prefix=/c/mbuild/release-enable shared=libstdc++-enable threads-enable版本特定的运行库libs-enable languages=c,禁用C++的SjLJ异常-禁用WI32的注册表-禁用WELS-禁用NLLS禁用多个-与GMP = /C/MuBuff/Office -与PPL=/C/MuBudi/Office -禁用PPL版本检查-与CLUGG=/C/MuBudi/Opvest-禁用CULG版本检查-与MPFR/C/MBuff/Office -与MPC= /C/MuBuff/Relp -启用LBGOMP-带有libiconv前缀=/c/mbuild/release -enable libstdcxx debug-enable cxx flags='-s-O2'*-with boot ldflags='-s'*-with boot cflags='-s-O2'-with boot cxflags='-s-O2'&>config.my.log

并建立:

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

除了libstdc++-6.dll之外,我已经对所有内容进行了优化。它的大小是5Mb! 所以在gcc mingw配置期间,在没有调试信息的情况下,我应该使用哪些选项来构建libstdc++.dll

注: 我需要libstdc++的调试和发布版本,所以我使用 -启用libstdcxx调试-除了通常构建的调试库之外,还构建单独的调试库。
此标志生成另一个libstdc++-6.dll,其中lib dir中的大于bin dir中的dll。

您应该将strip选项传递给链接器,而不是编译器-s。对于编译器,您应该在调试构建中传递-g-O0,这意味着包含调试信息+直接代码生成,而不进行任何优化。最后一个是在您阅读disasm代码的情况下,它使内容更清晰。因此,请尝试为构建时添加LDFLAGS环境变量-s选项


或者,您可以使用MSYS的strip program part从可执行文件和/或库二进制文件中剥离所有调试信息。

您应该能够在保存原始库并读取文档后调用strip命令,可能需要几次尝试才能获得正确的选项。仅供参考:我还没有看到有关BOOT_CpFlags或BOOT_CxFlags-only BOOT_CFLAGS的任何官方文档。如果您更仔细一点,您将在配置中看到-with BOOT ldflags='-s'选项。这没用。我认为-g会起作用,但不幸的是,我不能测试这个。这个问题不是实际的。但是谢谢你的回答。我在这里猜测,但是这个二元脂肪是不是由于一些隐含的静态链接?