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

使用MinGW的GCC将.o文件转换为.exe时出现重复定义错误

问题根源

你用gcc src/main.c -o pluto.o命令时没加-c参数,gcc默认会直接完成编译+链接全流程,生成的pluto.o其实是个完整的可执行文件,不是单纯的目标文件。之后再用gcc -o a.exe pluto.o去链接它,相当于把可执行文件里已有的启动代码、库符号和新链接的代码重复合并,自然会出现大量重复定义错误。

正确操作步骤
  • 先编译生成真正的目标文件(只编译不链接),必须加-c参数:
    gcc -c src/main.c -o pluto.o
    
  • 再把目标文件链接成可执行文件:
    gcc pluto.o -o a.exe
    
更省事的一步操作

如果不需要单独保留.o文件,直接一步到位生成exe就行:

gcc src/main.c -o a.exe
补充说明
  • _Jv_RegisterClasses未定义的错误,大多是因为文件格式不匹配导致的连带问题,按正确步骤编译后会自动消失。
  • Dwarf Error也是因为你把可执行文件当成目标文件来用,修正编译流程后就能解决。

内容的提问来源于stack exchange,提问作者mi66 mc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:43:15