我想编写自己的内核,但我仍然坚持为我的交叉编译器移植newlib。
答案 0 :(得分:2)
有没有理由不下载最新版本?
查看newlib/libc/sys/*/syscall.c
,通常是libgloss
(它包含在newlib来源中)。实际上,只要链接器可以找到它们,您就可以将它们放在任何您喜欢的位置,但这些位置是保留其他端口的位置。 Newlib希望找到具有特定名称的函数,你所要做的就是实现它们(我依旧记得有13个基本函数,还有像fork
这样的函数,你可以只返回错误代码)。
是的,您只需将您喜欢的任何代码插入到系统调用存根中。
您还需要提供crt0.o
;这为程序提供了真正的入口点,初始化内存(特别是bss
),从操作系统保存的地方获取argv
,并调用main
。在atexit
返回后,通常会有一些调用main
处理程序,并将退出代码传递回操作系统。