【发布时间】:2020-03-29 05:06:47
【问题描述】:
我有几个关于https://wiki.osdev.org/Meaty_Skeleton 的问题,它说:
GCC 文档明确指出 libgcc 需要 提供
memcmp、memcpy、memmove和memset函数,以及某些平台上的abort。我们会满足 通过创建一个特殊的内核 C 库 (libk) 来满足此要求 包含用户空间 libc 的独立部分 (不需要任何内核功能)而不是托管 libc 需要进行系统调用的功能
好的,我知道libgcc是gcc使用的“私有库”,即它只在编译过程中有意义,当gcc在使用时,有点像gcc的助手。这是正确的吗?我知道我运行 gcc 的机器叫做构建机器,宿主机器是我自己的操作系统。这里指定的独立环境是什么?由于 gcc 在构建机器上运行,所以我猜 libgcc 必须使用构建机器 libgcc?独立式在哪里出现?
另外,什么是 libk?我认为我真的不了解独立和托管环境:(
【问题讨论】:
-
libk只是本教程的作者为他们将要创建的库选择的名称,以提供 libgcc 所依赖的那些 ISO C 函数。 -
@PeterCordes 这里的独立环境是什么?我的主机系统(我正在构建的操作系统)?
-
它是独立的,不是由操作系统托管的。即它是您正在开发的内核。从那段的上下文中有几个线索,就像最后一句话基本上定义了它:独立(不需要任何内核功能)
标签: c gcc x86 osdev freestanding