我在指定我的爱好操作系统内核的入口点方面遇到了问题。
有一个简单的引导加载程序可以将内核代码加载到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
的入口点?