gpt4 book ai didi

c - 如何移植 newlib?

转载 作者:行者123 更新时间:2023-11-30 18:40:35 24 4
gpt4 key购买 nike

我想编写自己的内核,但我一直坚持为我的交叉编译器移植 newlib。

  1. newlib 是哪个版本我要下载吗?

  2. 系统调用stubs放在哪里?最少的实现就足够了吗?如果我决定稍后编辑系统调用,是否必须重建 newlib?

  3. 我的内核在中断 0x80 (128d) 上公开了所有系统调用,因此我只需在每个 stub 中放入一些内联汇编即可完成我需要它执行的操作。如何根据您的内核来实现它们取决于您。

我该怎么做?

最佳答案

  1. 有什么理由不下载最新版本吗?

  2. 查看 newlib/libc/sys/*/syscall.c 以及 libgloss(它包含在 newlib 源代码中)。事实上,你可以把它们放在任何你喜欢的地方,只要链接器能找到它们,但这些地方是保留其他端口的地方。 Newlib 期望找到具有特定名称的函数,而您所要做的就是实现它们(我依稀记得有 13 个基本函数,再加上像 fork 这样的其他函数,您只需返回一个错误代码即可)。

  3. 是的,您只需将您喜欢的任何代码插入系统调用 stub 即可。

您还需要提供crt0.o;这为程序提供了真正的入口点,初始化内存(特别是 bss),从操作系统保存的位置获取 argv,并调用 main >。在 main 返回后,通常会有一些内容来调用 atexit 处理程序,并将退出代码传递回操作系统。

关于c - 如何移植 newlib?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com