Vor kurzem habe ich ein Tutorial zur Implementierung eines einfachen x86-Betriebssystems gelesen, als ich sah, dass ich zum Konfigurieren der Entwicklungsumgebung Skriptdateien, Makefiles und Linker schreiben muss, die in der Entwicklung verwendet werden. Ich konnte es wirklich nicht verstehen, ich weiß nicht, wie ich mit diesen Codes umgehen soll. Ich hoffe, die Senioren können mir sagen, welche Assemblerkenntnisse und Linux-Operationen ich lernen muss.
Dies ist der Makefile-Code: —————————————————————————————
C_OBJECTS = $(patsubst %.c, %.o, $(C_SOURCES))
S_SOURCES = $(Shell find . -name "*.s" )
S_OBJECTS = $(patsubst %.s, %.o, $(S_SOURCES))
LD = ld
ASM = nasm
LD_FLAGS = -T scripts/kernel.ld -m elf_i386 -nostdlib
ASM_FLAGS = -f elf - g-F sticht
.c.o:
@echo 编译代码文件 $< ...
$(CC) $(C_FLAGS) $< -o $@
.s.o:
@echo 编译汇编文件 $< ...
$(ASM) $(ASM_FLAGS) $<
Link:
@echo 链接内核文件...
$(LD) $(LD_FLAGS) $(S_OBJECTS) $(C_OBJECTS) -o hx_kernel
.PHONY:cleanclean:
$(RM) $(S_OBJECTS) $(C_OBJECTS) hx_kernel
.PHONY:update_imageupdate_image:
sudo mount floppy.img /mnt/kernel
sudo cp hx_kernel /mnt/kernel/hx_kernel
sleep 1
sudo umount /mnt/kernel
.PHONY:mount_imagemount_image:
sudo mount floppy.img /mnt/kernel
.PHONY:umount_imageumount_image:
sudo umount /mnt/kernel
.PHONY:qemuqemu:
qemu -fda floppy.img -boot a
.PHONY:bochsbochs:
bochs -f tools/bochsrc.txt
.PHONY:debugdebug:
qemu -S -s -fda floppy.img -boot a &
sleep 1
cgdb -x tools/gdbinit
——————————————————————————————
Dies ist der Linker-Code: —————————————————————————————
/*
*/
ABSCHNITTE
{
/* 段起始位置 */
. = 0x100000;
.text :
{
*(.text)
. = ALIGN(4096);
}
.data :
{
*(.data)
*(.rodata)
. = ALIGN(4096);
}
.bss :
{
*(.bss)
. = ALIGN(4096);
}
.stab :
{
*(.stab)
. = ALIGN(4096);
}
.stabstr :
{
*(.stabstr)
. = ALIGN(4096);
}
/DISCARD/ : { *(.comment) *(.eh_frame) }
}————————————————————————————
这个不需要懂汇编。你需要学习 Makefile 和 ld script。