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

Windows下MinGW编译elf_i386代码时ld链接器报错的问题问询

解决MinGW下ld报错"unrecognised emulation mode: elf_i386"的问题

问题根源

MinGW默认的ld工具是针对Windows PE格式构建的,原生不支持elf_i386模拟模式,这就是报错的核心原因。以下是几种无需WSL的可行解决方案:


方案1:替换为MinGW交叉编译链接器

MinGW提供了适配i386 ELF格式的交叉编译工具链,把链接命令中的ld替换为i686-w64-mingw32-ld即可:

i686-w64-mingw32-ld -m elf_i386 -o kernel.bin -Ttext 0x1000 kernel-entry.o kernel.o --oformat binary

如果系统中没有该工具,打开MinGW安装管理器,安装mingw-w64-i686-binutils组件即可。


方案2:通过gcc间接调用链接器

利用gcc自动适配底层链接器的特性,避免直接调用ld。将链接命令替换为:

gcc -m32 -ffreestanding -nostdlib -o kernel.bin -Ttext 0x1000 kernel-entry.o kernel.o -Wl,--oformat=binary

关键参数说明:

  • -nostdlib:告知gcc不链接标准库,符合独立操作系统的编译要求
  • -Wl,--oformat=binary:将链接器参数--oformat binary传递给底层工具

额外优化建议

  • 修正nasm编译命令:将-f elf改为-f elf32,确保生成标准32位ELF目标文件:
    nasm assembly/kernel-entry.asm -f elf32 -o kernel-entry.o
    
  • 替换cat命令:Windows原生命令行不支持cat,改用二进制合并命令:
    copy /b mbr.bin+kernel.bin os-image.bin
    

内容的提问来源于stack exchange,提问作者Jack Thomson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:50:34