原始二进制入口点

时间:2017-07-05 13:46:07

标签: c linker ld osdev lld

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

有一个简单的引导加载程序可以将内核代码加载到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(和lld)忽略-e kmain参数,并使do_smth()成为切入点。

我如何强制ld使kmain()成为地址为0x6400000的入口点?

0 个答案:

没有答案