Linux操作系统
-
Julia构建需要GCC版本4.7或更高版本。
-
要使用不在系统库搜索路径上的外部共享库,请在"Make"中设置变量"USE_SYSTEM_XXX=1"和"LDFLAGS=-Wl,-rpath,/path/to/dir/contains/libXXX.so"。用户的文件。
-
除了设置’LDFLAGS’变量,您还可以将库目录分配给`LD_LIBRARY_PATH`环境变量(在编译期间和执行期间)。
-
应该谨慎使用`USE_SYSTEM_*'标志。 它们仅用于在包维护专家和Julia开发人员之间的密切合作下进行故障排除、移植和打包,以确保正确的Julia构建。 只有官方提供的二进制文件才能用于生产环境。 通常不考虑使用这些标志所产生的问题。
-
另请参阅专用于 外部依赖。
Linux构建故障排除
问题 | 可能的解决方案 |
---|---|
OpenBLAS构建失败 |
在’Make中设置以下构建参数之一。用户`并重复构建:<ul><li>`OPENBLAS_TARGET_ARCH=BARCELONA`(AMD CPU)或`OPENBLAS_TARGET_ARCH=NEHALEM`(Intel CPU)<ul>设置`OPENBLAS_DYNAMIC_ARCH=0’以在单个二进制文件中禁用多个体系结构的编译。</ul></li>`li>'OPENBLAS_NO_AVX2=1`禁用AVX2指令,它允许使用参数`OPENBLAS_DYNAMIC_ARCH=1’的OpenBLAS编译使用旧版本的binutils。 </li><li>值为’USE_SYSTEM_BLAS=1',使用系统提供的库’libblas'。 <ul><li>设置’LIBBLAS=-lopenblas’和’LIBBLASNAME=libopenblas’以在安装了多个版本的BLAS时强制使用系统提供的OpenBLAS库。 </li></ul></li></ul><p>收到错误`时。./内核/x86_64/dgemm_kernel_4x4_haswell。S:1709:Error:no such instruction’vpermpd$0xb1,%ymm0,%ymm0',you must set`OPENBLAS_DYNAMIC_ARCH=0`or`OPENBLAS_NO_AVX2=1`or a newer version of`binutils`(2.18or later)is required. (https://github.com/JuliaLang/julia/issues/7653[Issue#7653])</p><p>如果链接器找不到’gfortran`并且出现错误`julia/usr/bin/x86_64-linux-gnu-ld:cannot find-lgfortran`,请使用命令`gfortran-检查路径print-file-name=libgfortran.so `并根据输出,执行如下所示的导出``export LDFLAGS=-L/usr/lib/gcc/x86_64-linux-gnu/8/'。</p> |
非法指令错误(Invalid instruction) |
检查CPU是否支持AVX指令,而操作系统不支持(例如,通过虚拟化,如https://github.com/JuliaLang/julia/issues/3263 [这个问题])。 |