所以我有一个没有太多功能的最小操作系统。有一个引导加载程序,它以 32 位保护模式加载基本的 C 内核。如何移植到 C 库中,以便可以使用类似的东西printf
?我正在寻找使用 GNU C 库。任何地方都有教程吗?
问问题
2888 次
4 回答
7
好的,移植到 C 库中并不难,我在内核中使用 Newlib。这是一个开始的教程:http ://wiki.osdev.org/Porting_Newlib 。
你基本上需要:
- 使用您的交叉编译器编译库(例如 Newlib)
- 为内核中的一系列系统函数(如 fork、fstat 等)提供存根实现
- 将库和内核链接在一起
如果你想使用 malloc 或 printf 之类的函数(在内部使用 malloc),你需要某种内存管理和最简单的 sbrk 工作实现。
于 2013-03-22T20:05:52.480 回答
2
另一个新人是musl,它专门用于改善嵌入式空间的情况。
不过,这可能不是初学者的最佳选择,因为它仍在进行中。
于 2013-03-25T12:21:13.953 回答
1
最好找一个小的 libc,比如uClibc。GNU C 库非常庞大。正如评论所说,第一步是让 C 编译器运行。
你想做什么?构建一个完整的操作系统是一群人持续几年的工作......最好从已经工作的东西开始,然后破解你最感兴趣的部分。
于 2013-03-22T19:47:16.933 回答