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

在Windows下交叉编译Linux可执行文件遇格式识别错误求助

汇编ELF64目标文件后链接报错"File format not recognized"的原因与解决

问题详情

你尝试在Windows系统下用NASM汇编生成Linux用的ELF64目标文件,再用ld链接时出现错误:

C:\>nasm -f elf64 helloWorld.s

C:\>ld -o helloWorld helloWorld.o
helloWorld.o: file not recognized: File format not recognized

你的目标是生成Linux操作系统的可执行文件,打算在Windows完成编译后传输到Linux使用。

错误原因

  • 你使用的是Windows原生的ld链接器,它仅支持Windows平台的PE/COFF格式目标文件,无法识别nasm -f elf64生成的ELF64格式(这是Linux系统的标准目标文件格式),因此抛出格式不识别的错误。
  • 跨平台编译的核心矛盾:Windows和Linux的工具链依赖的文件格式完全不同,原生Windows工具链无法处理Linux的ELF文件。

解决办法

  • 使用MinGW-w64交叉编译工具链
    安装MinGW-w64后,使用对应架构的交叉链接器(比如针对x86_64 Linux的x86_64-linux-gnu-ld)来链接ELF64文件。建议全程使用交叉工具链的汇编器和链接器,确保格式匹配。
  • 借助WSL(Windows子系统Linux)
    在Windows上启用WSL并安装Linux发行版(如Ubuntu),直接在WSL环境下使用NASM和GNU ld编译链接,生成的可执行文件天然适配Linux,无需额外处理。
  • 使用Docker容器
    拉取Linux镜像(如Ubuntu),在容器内完成编译链接操作,之后将生成的可执行文件导出到Windows,再传输到Linux系统使用。

内容的提问来源于stack exchange,提问作者Mohamed Taha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:47:41