当前位置: 代码迷 >> 综合 >> ucore 操作系统 lab2 proj5 make编译导致bootloader大于510
  详细解决方案

ucore 操作系统 lab2 proj5 make编译导致bootloader大于510

热度:62   发布时间:2024-02-24 23:30:15.0

代码调试平台:

MacBook pro
i386-elf-gcc

在对代码ucorebook tag proj5 进行编译调试的过程中,发现bootload 由于增加了物理内存探测代码,所以导致无法进行下去

但是对比较新的版本进行make,发现即使增加了内存探测功能汇编代码,但是仍然可以我编译通过;

对比二者的代码发现存在以下区别

# create bootblock 
bootfiles = $(call listf_cc,boot)
$(foreach f,$(bootfiles),$(call cc_compile,$(f),$(CC),$(CFLAGS) -Os -nostdinc))bootblock = $(call totarget,bootblock)$(bootblock): $(call toobj,boot/bootasm.S) $(call toobj,$(bootfiles)) | $(call totarget,sign)@echo + ld $@
# $(V)$(LD) $(LDFLAGS) -N -e start -Ttext 0x7C00 $^ -o $(call toobj,bootblock)$(V)$(LD) $(LDFLAGS) -N -T tools/boot.ld $^ -o $(call toobj,bootblock)@$(OBJDUMP) -S $(call objfile,bootblock) > $(call asmfile,bootblock)@$(OBJCOPY) -S -O binary $(call objfile,bootblock) $(call outfile,bootblock)@$(call totarget,sign) $(call outfile,bootblock) $(bootblock)$(call create_target,bootblock)

boot.ld 文件代码

OUTPUT_FORMAT("elf32-i386")                                                                                                                                                                                       
OUTPUT_ARCH(i386)SECTIONS {
    . = 0x7C00;.startup : {
     *bootasm.o(.text)}   .text : {
     *(.text) }.data : {
     *(.data .rodata) }/DISCARD/ : {
     *(.eh_*) }
}

具体为什么替换这块代码就能够减少bootload.out 100字节的大小的
我也不知道是为什么,这个要留在后边进行分析了。

  相关解决方案