跳转到内容

花粉编程语言/现代语言中的操作系统开发

来自维基教科书,开放世界中的开放书籍

现代语言和静态库中的操作系统开发

[编辑 | 编辑源代码]

在我看来,在现代编程语言中编写包含多个静态库的 C 程序是比较困难的。现代编程语言通常包含一个运行时库。Rust、D 和 Ada 都包含一个运行时。

Rust 运行时非常小,但它是必需的,因为它包含了基本整数类型、向量和其他类型的定义。no_std 宏仅保留了不依赖于分配的操作系统无关代码。

这类似于 D 中的 betterC。betterC 完全去除了运行时库。它没有 GC、TypeInfo 或分配。

  • 当 Rust 库静态链接时,Rust 不需要运行时初始化。
  • Ada 需要通过调用 adainit 和 adafinal 来进行运行时初始化。
  • 当 D 不处于 betterC 模式时,它也需要运行时初始化,用于初始化 GC 和其他全局变量,以及调用一些操作系统函数来设置状态,例如 pthreads。

在以前的版本中,cargo init 默认情况下创建库而不是二进制文件。这些模块包含仅限 Rust 的代码,这些代码链接到用 C 编写的静态或动态库,包括 C 标准库或任何操作系统库。类似地,Ada 库仅包含 Ada 代码。实际上,.a 库可以像 .o 目标文件一样链接,而目标文件又映射到用特定语言编写的源文件。

华夏公益教科书