4

这是我的生成文件:

obj =init3.o initfunc.o descriptor.o disk.o

init:$(obj)
     ld -o init.out $(obj)

init3.o:init3.asm
        nasm -f aout init3.asm

initfunc.o:initfunc.asm
        nasm -f aout  initfunc.asm

descriptor.o:../lib/descriptor.asm
    nasm -f aout  ../lib/descriptor.asm

disk.o:../drive/disk.asm
    nasm -f aout  ../drive/disk.asm

他们编译完全没有错,但是当链接器开始链接时,出现错误:file not recognized: file format not recognized. 然后我通过使用将每个文件更改为elf格式-f elf,错误仍然存​​在,我用谷歌搜索GUN链接器确实识别.out格式,所以有什么问题我的代码?

4

1 回答 1

0

FWIW:.o在重新运行之前删除您的文件make。在调整编译器标志之后很容易忘记这一点。(我是从这里的经验说的......)

说明:调整makefile不会强制重新编译(除非您在 ; 中的每个规则中将自己指定makefile依赖项,makefile这甚至可能不是一个坏主意)。您可能会一遍又一遍地链接相同的旧目标文件。

于 2014-01-25T21:29:15.723 回答