我正在尝试编译一个简单的内核。
有一个加载程序代码:
.text
.global boot
.code32
cli
call main
jmp .
主要代码:
int main(void){
while(1){
}
}
链接器scritp:
ENTRY (boot)
SECTIONS {
.boot ALIGN(0x1000) : { bootstrap.o(.text) }
.text ALIGN(0x1000) : { *(.text) }
.rodata ALIGN(0x1000) : { *(.rodata) }
.data ALIGN(0x1000) : { *(.data) }
.bss ALIGN(0x1000) : { *(.bss) }
}
因此,当我尝试将它们链接在一起时(i586-elf-ld -T linker.ld bootstrap.o main.o
),它会说cannot find symbol boot;
我该如何解决这个问题?
答案 0 :(得分:0)
您应该将符号“boot”定义为标签:
boot:
cli
call main
...