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

    科技2022-07-10  88

    代码调试平台:

    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字节的大小的 我也不知道是为什么,这个要留在后边进行分析了。

    Processed: 0.010, SQL: 8