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