将我的操作系统与LD链接,错误文件无法识别:无法识别文件格式

时间:2017-05-15 19:51:00

标签: windows x86 cygwin ld

我在链接文件时遇到问题,以使我的操作系统(迅雷)正常工作。我用{

编译start.o
nasm -f aout start.o start.asm

当我将引导程序和内核链接在一起时,它给了我这个错误:

  

start.o:无法识别文件:无法识别文件格式。

有关我为什么会收到此错误以及如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

您收到的错误表明 LD 无法理解start.o的文件格式,因此无法将其作为目标文件处理。当我在你的对象上运行file start.o时,它给了我这个输出:

  

start.o:Linux / i386 impure可执行文件(OMAGIC)

您在Windows上使用Cygwin。您说您使用此行将start.asm汇总到start.o

nasm -f aout start.o start.asm

Cygwin链接器( LD )不将aout格式理解为有效的目标文件格式。你可以做的是让 NASM 使用-fwin32参数输出一个Microsoft Win32(i386)目标文件。 LD 应该能够在链接阶段使用该目标文件格式。