加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

assembly – gnu链接器:文件无法识别

发布时间:2020-12-16 07:04:28 所属栏目:百科 来源:网络整理
导读:这是我的makefile: obj =init3.o initfunc.o descriptor.o disk.oinit:$(obj) ld -o init.out $(obj)init3.o:init3.asm nasm -f aout init3.asminitfunc.o:initfunc.asm nasm -f aout initfunc.asmdescriptor.o:../lib/descriptor.asm nasm -f aout ../lib/
这是我的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

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读