makefile文件
OBJFILES = start.o gdt.o idt.o irq.o isrs.o kb.o main.o scrn.o timer.o
kernel.bin: $(OBJFILES)
$(LD) -T link.ld -o $@ $^
正常编译结果如下:
lizg@ubuntu:~/src/myos$ readelf -s kernel.bin | grep start
6: 00000000 0 FILE LOCAL DEFAULT ABS start.s
116: 00100000 0 NOTYPE GLOBAL DEFAULT 1 start
将Makefile文件中的start.o移动到末尾后的编译结果如下:
lizg@ubuntu:~/src/myos$ readelf -s kernel.bin | grep start
14: 00000000 0 FILE LOCAL DEFAULT ABS start.s
117: 001010f0 0 NOTYPE GLOBAL DEFAULT 1 start
说明,ld链接器按照参数顺序组织obj文件,使用时需要注意。