【发布时间】:2021-09-18 18:15:36
【问题描述】:
如果我们想创建原生 Linux 应用,我们需要使用glibc C API。如果我是正确的,glibc API 本身会调用 Linux C API。现在我有两个问题:
-
Linux C API 是否可供程序员使用,或者
glibc是我们可以使用的最低值? (在 C 语言中最低,不是汇编语言) -
其他更高级别的框架使用什么? (.NET Core、Java、Python 等)他们使用
glibcAPI 还是直接与内核对话? (就像glibc本身)
【问题讨论】:
-
定义“最低”。
What do other higher-level frameworks use?你不能一概而论。每一个高级“框架”都使用其他东西。而.NET绝对不用glibc...而且通常程序使用可用的C库,不一定是glibc,可以是其他任何东西。 -
有一些 Linux 发行版不使用 GNU libc。例如,Alpine Linux 使用 musl libc。当然还有其他使用 Linux 内核构建的系统,例如使用 Bionic 的 Android。 Linux 的其他 libc 实现包括 uClibc 和可能的 NewLib(但 NewLib 主要用于使用裸机或 RTOS 风格的微内核的系统)。
-
Linux 系统调用接口因不同的体系结构而不同(包括不同的系统调用集、不同的系统调用编号或特定系统调用的不同行为),因此 libc 实现抽象出许多这些实现细节(尽管各种系统类型的大小和
long int和指针等基本C 类型的大小以及基本C 类型的对齐大小仍然存在差异。
标签: linux linux-kernel glibc