我正在开发一个操作系统。我想asm
在我的主内核elf
中包含一个小程序,它可以作为第一个加载的进程。我无法让这个工作。该程序是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
在我的 main 中的某个地方包含一个单独的二进制文件,kernel.elf
并生成一些标记,以便我可以从我的内核中找到它?有什么建议么?