端口GNU C库到最小的爱好操作系统

use*_*887 2 c assembly operating-system osdev hobby-os

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

ief*_*rge 7

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

你基本上需要:

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

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


Ant*_*hys 5

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

请尝试使用newlib.将其移植到新内核很容易.你只需要编写一些支持功能,如解释在这里.