我在链接文件时遇到问题,以使我的操作系统(迅雷)正常工作。我用{
编译start.o
nasm -f aout start.o start.asm
当我将引导程序和内核链接在一起时,它给了我这个错误:
start.o:无法识别文件:无法识别文件格式。
有关我为什么会收到此错误以及如何解决此问题的任何建议?
答案 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 应该能够在链接阶段使用该目标文件格式。