2

所以我有一个没有太多功能的最小操作系统。有一个引导加载程序,它以 32 位保护模式加载基本的 C 内核。如何移植到 C 库中,以便可以使用类似的东西printf?我正在寻找使用 GNU C 库。任何地方都有教程吗?

4

4 回答 4

7

好的,移植到 C 库中并不难,我在内核中使用 Newlib。这是一个开始的教程:http ://wiki.osdev.org/Porting_Newlib 。

你基本上需要:

  • 使用您的交叉编译器编译库(例如 Newlib)
  • 为内核中的一系列系统函数(如 fork、fstat 等)提供存根实现
  • 将库和内核链接在一起

如果你想使用 malloc 或 printf 之类的函数(在内部使用 malloc),你需要某种内存管理和最简单的 sbrk 工作实现。

于 2013-03-22T20:05:52.480 回答
5

我强烈建议不要使用 glibc。这是一头野兽。

改用newlib。将其移植到新内核很容易。您只需要编写一些支持函数,如此所述。

于 2013-03-22T20:07:04.090 回答
2

另一个新人是musl,它专门用于改善嵌入式空间的情况。

不过,这可能不是初学者的最佳选择,因为它仍在进行中。

于 2013-03-25T12:21:13.953 回答
1

最好找一个小的 libc,比​​如uClibc。GNU C 库非常庞大。正如评论所说,第一步是让 C 编译器运行。

你想做什么?构建一个完整的操作系统是一群人持续几年的工作......最好从已经工作的东西开始,然后破解你最感兴趣的部分。

于 2013-03-22T19:47:16.933 回答