Julia预编译系统镜像是否可迁移至其他安装对应版本Julia的设备运行
PackageCompiler.jl生成的.so系统镜像复用说明
跨用户发送使用的情况
不一定可以直接正常运行,必须同时满足以下所有前提条件:
- 接收方的操作系统、CPU架构和你编译镜像时的设备完全一致(例如你在x86_64架构的Ubuntu 22.04上编译的镜像,无法在ARM架构的 macOS 或者CentOS 7上运行)
- 接收方系统的底层依赖库版本和你的编译环境兼容:比如编译时依赖的glibc版本、你预编译的3个Julia包绑定的外部系统依赖(如FFmpeg、CUDA、OpenBLAS等)版本,需要和接收方设备上的对应版本匹配,否则会出现依赖找不到的报错
- 你编译镜像时没有硬编码仅你的本地环境才有的专属路径、环境变量配置
满足以上条件后,接收方只需要通过julia --sysimage /path/to/xxx.so命令启动Julia,即可正常加载使用该预编译镜像。
个人换新设备的使用情况
只要你的新设备满足上面提到的架构、系统、依赖库兼容要求,就可以直接使用。通常如果新旧设备安装的是同版本、同架构的操作系统,复用成功率远高于跨用户发送的场景。
如果使用过程中出现类似GLIBC_xxx not found的报错,说明底层依赖版本不兼容,这种情况只能在目标设备上重新用PackageCompiler.jl编译镜像。
内容的提问来源于stack exchange,提问作者hg153
相关产品推荐
相关产品推荐

