包装图像
Julia包映像为Julia包提供对象(本机代码)缓存。 它们类似于朱莉娅的 系统映像并支持许多相同的功能。 实际上,底层序列化格式是相同的,系统映像是构建包映像所依据的基本映像。
高级别概览
包映像是包含代码和数据的共享库。 像 .纪 缓存文件,它们是每个包生成的。 Data部分包含全局数据(包中的全局变量)以及有关包定义的方法和类型的必要元数据。 代码部分包含缓存Julia基于LLVM的编译器的最终输出的本机对象。
命令行选项 --pkgimages=没有 可用于关闭此会话的对象缓存。 请注意,这意味着缓存文件可能必须重新生成。 见 JULIA_MAX_NUM_PRECOMPILE_FILES对于变体的上限Julia每默认缓存。
|
请注意,虽然包映像将自己呈现为本机共享库,但它们只是其近似值。 您将无法从本机程序链接到它们,它们必须从Julia加载。 |
连结
由于包映像包含本机代码,我们必须在它们上运行链接器才能使用它们。 您可以设置环境变量 朱莉亚_VERBOSE_LINKING到 真的 使包图像链接过程详细。
此外,我们不能假设用户安装了工作系统链接器。 因此,Julia随附LLVM链接器LLD,以提供开箱即用的工作体验。 在 基/链接。jl,我们实现了一个有限的接口,以便能够在所有支持的平台上链接包映像。
针对多个微体系结构优化的封装图像
类似于 多版本控制对于系统映像,包映像支持多版本控制。 如果您在异构环境中,具有统一缓存,则可以设置环境变量 JULIA_CPU_TARGET=泛型 多版本对象缓存。