所有关于模块的文献都是最近才出现的,我正在为一个核心概念而挣扎。当我制作自己的模块时,在链接过程之后,是否存在一种 * 传统 * 或 * 公认 * 的方式来打包这些模块,以便将它们作为库分发?
8yparm6h1#
一般来说,构建模块接口的产品(不同于编译的链接器产品,如静态/共享库)在编译器之间是不可共享的。至少在相同操作系统/平台上编译的库是不可共享的。编译的模块格式是编译器特定的,甚至在同一个编译器的版本之间可能不稳定。因此,如果你想发布一个使用模块构建的预编译库,那么就像非模块构建一样,你需要发布用于使用该模块的文本文件。具体来说,你需要内置到库中的任何模块的所有接口单元。实现单元不需要给出。因为它们的产品都是库的编译形式(除非它们是接口单元所包括的实现分区)。也许在将来,同一平台的编译器会标准化一个编译的模块格式,甚至跨平台,但在那之前,你必须保持文本与你的预编译库一起发布。
1条答案
按热度按时间8yparm6h1#
一般来说,构建模块接口的产品(不同于编译的链接器产品,如静态/共享库)在编译器之间是不可共享的。至少在相同操作系统/平台上编译的库是不可共享的。编译的模块格式是编译器特定的,甚至在同一个编译器的版本之间可能不稳定。
因此,如果你想发布一个使用模块构建的预编译库,那么就像非模块构建一样,你需要发布用于使用该模块的文本文件。具体来说,你需要内置到库中的任何模块的所有接口单元。实现单元不需要给出。因为它们的产品都是库的编译形式(除非它们是接口单元所包括的实现分区)。
也许在将来,同一平台的编译器会标准化一个编译的模块格式,甚至跨平台,但在那之前,你必须保持文本与你的预编译库一起发布。