gnu链接器:文件无法识别

时间:2013-05-19 14:04:31

标签: assembly makefile nasm

这是我的makefile:

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. 然后我使用-f elf将每个文件更改为elf格式,错误仍然存​​在,我用谷歌搜索GUN链接器确实识别.out格式,那么我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

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

说明:调整makefile强制执行重新编译(除非您将makefile本身指定为makefile中每个规则的依赖项;甚至不是一个坏主意)。您有可能一遍又一遍地链接相同的旧对象文件。