鸡计划中的图书馆单位是什么?

时间:2017-03-13 13:44:12

标签: scheme chicken-scheme

术语“单元”和“库单元”在网站上的许多地方使用,但我找不到文档甚至这些术语的定义。我找到的唯一描述是“用户手册/支持的语言/声明/(单位|使用)”。 “用户手册/使用编译器/具有多个文件的示例”中也有一个示例。如你所见,非常稀缺。

如果我得到回复,下一个问题是“单位”如何与“用户手册/支持的语言/模块”中描述的模块相关?我认为“单位”在某种程度上与编译有关,而模块与Scheme值名称有关。

1 个答案:

答案 0 :(得分:2)

单位是"编译单元"的缩写,基本上是一个编译库。如果查看CHICKEN的源代码,您会注意到手册中的每个单元(大致)都对应一个源文件。每个源文件都单独编译为.o文件,这些单元全部链接到libchicken.so / libchicken.a

除非您静态链接,否则此术语不再相关。然后你需要(declare (uses ...)),它指的是单位名称。这是必需的,因为特定单元的顶层需要在依赖它的顶层之前运行,以便加载任何定义。

在现代代码中,您通常只使用模块,但这意味着您的代码无法静态链接。我们知道这很令人困惑,这就是为什么我们尝试使用CHICKEN 5更轻松地使用模块进行静态链接,并减少了解单位的需要。