找不到输入符号

时间:2013-12-25 13:06:40

标签: c gcc assembly x86 ld

我正在尝试编译一个简单的内核。

有一个加载程序代码:

.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;

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您应该将符号“boot”定义为标签:

boot:
    cli
    call main
    ...