0

我在为我的爱好操作系统内核指定入口点时遇到问题。

有一个简单的引导加载程序可以加载内核代码以0x6400000寻址并跳转到那里。

然后我有这个链接器命令,它输出带有起始地址的内核:

ld --Ttext 0x6400000 -m elf_i386 --oformat binary -e kmain main.o -o main.bin

main.cc入口点功能:

void kmain() { // ... }

只要kmain()是第一个定义的函数,一切都可以正常工作。如果不是:

void do_smth() { // ... }

void kmain() 
{
    do_smth();
}

然后ld(and lld) 忽略-e kmain参数,并创建do_smth()一个入口点。

我怎么能强制ld创建kmain()一个地址为的入口点0x6400000

4

0 回答 0