【发布时间】:2016-02-08 09:05:58
【问题描述】:
我正在开发一个操作系统。我想在我的主内核elf 中包含一个小的asm 程序,它可以作为第一个加载的进程。我无法让这个工作。程序是initcode.s。我使用了以下Makefile,我为此任务从 xv6 操作系统源修改:
initcode:
$(AS) $(ASFLAGS) initcode.s -o initcode.o
ld $(LDFLAGS) -N -e start -Ttext 0 -o initcode initcode.o
objcopy --input binary --output elf32-i386 --binary-architecture i386 initcode.out initcode
kernel.elf: $(OBJECTS) initcode
ld -T link.ld -melf_i386 $(OBJECTS) -o kernel.elf initcode
内核编译和链接正常。 objcopy 还创建标记,使我能够从内核代码中找到二进制文件。但是initcode 的内容被丢弃了。内容与initcode.out 中生成的汇编步骤不同。
如何实现将initcode.s 作为一个单独的二进制文件包含在我的主kernel.elf 中的某个位置,并生成一些标记,以便我可以从我的内核中找到它?有什么建议吗?
【问题讨论】:
标签: makefile linker osdev objcopy