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

Ubuntu交叉编译Windows PE时抑制gcc自动添加.exe后缀

解决mingw交叉编译自动添加.exe后缀的问题

针对Ubuntu 20.04.4 LTS上x86_64-w64-mingw32-gcc 9.3-win32版本自动给无扩展名输出文件添加.exe的问题,提供以下几种无需克隆旧系统的解决办法:

方法1:直接通过链接器参数指定输出文件

修改Python脚本中的编译命令,使用-Wl,-o,{outfile}替代原有的-o {outfile},让链接器直接接管输出文件名的指定,绕过gcc的自动后缀逻辑:

x86_64-w64-mingw32-gcc {path} -static -Wl,-o,{outfile}

这个方法无需修改系统配置,仅调整编译参数即可生效,适合临时需求或脚本内快速适配。

方法2:修改mingw的specs配置文件

通过调整mingw的编译规则永久禁用自动添加.exe后缀:

  1. 首先获取specs文件的路径:
    x86_64-w64-mingw32-gcc -print-file-name=specs
    
  2. 用文本编辑器打开该文件,查找包含.exe的输出规则行,例如类似:
    *link_output:
    %{!shared:%{!dll:-o %e.exe}}
    
  3. 将该行修改为:
    *link_output:
    %{!shared:%{!dll:-o %e}}
    
  4. 保存文件后,后续编译时就不会自动添加.exe后缀了。

方法3:编译后用objcopy生成目标文件(无冗余残留)

如果前两种方法不适用,可以编译时先指定临时带.exe的输出,再用objcopy生成无后缀文件并删除临时文件:

x86_64-w64-mingw32-gcc {path} -o {outfile}.tmp -static && objcopy {outfile}.tmp {outfile} && rm -f {outfile}.tmp

这种方法不会留下冗余文件,临时文件在操作完成后立即删除,适合无法修改编译参数或配置的场景。

内容的提问来源于stack exchange,提问作者b.etter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:36:15