You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MinGW-w64编译GCC 13.2.0时遇到“export ordinal too large: 77583”错误

用MinGW-w64编译GCC 13.2.0时遇到“export ordinal too large: 77583”错误

嘿,这个问题我之前帮朋友排查过,本质是Windows PE文件格式的限制——它要求导出表的序数不能超过65535,而GCC 13.2.0编译生成的cc1.exe导出的符号数量太多,直接突破了这个上限。给你几个亲测有效的解决思路:

  • 修改链接器参数,限制导出符号数量
    这是最直接的解决办法。默认情况下,MinGW-w64的链接器会导出所有符号,我们可以通过参数让它只导出必要的符号,大幅减少序数数量。在配置GCC的时候,给configure命令加上对应的编译和链接参数:

    ../configure --target=x86_64-w64-mingw32 --prefix=/path/to/your/install \
    CXXFLAGS="-Wl,--no-export-all-symbols" \
    LDFLAGS="-Wl,--no-export-all-symbols"
    

    这里的--no-export-all-symbols会告诉链接器只保留显式标记为导出的符号,避开默认导出所有符号的行为。

  • 升级你的MinGW-w64工具链
    如果你当前使用的MinGW-w64版本比较旧,可能对PE格式的导出表优化不够完善。建议升级到最新版的MinGW-w64(比如10.0及以上版本),新版本的链接器针对这类大符号量的场景做了优化,可能能自动处理部分冗余符号的导出问题。

  • 启用链接时间优化(LTO)
    开启LTO不仅能提升编译后程序的性能,还能在链接阶段进一步清理不必要的符号,减少导出数量。在配置时加上--enable-lto参数,结合上面的链接器参数一起使用:

    ../configure --target=x86_64-w64-mingw32 --prefix=/path/to/your/install \
    --enable-lto \
    CXXFLAGS="-Wl,--no-export-all-symbols" \
    LDFLAGS="-Wl,--no-export-all-symbols"
    

另外要注意,如果你是在编译32位的GCC,这个问题会更容易出现,因为32位程序的符号冗余可能更多,上面的方案同样适用。

备注:内容来源于stack exchange,提问作者sean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 08:48:16