Linux
- Se requiere la versión 4.7 o posterior de GCC para compilar Julia.
- Para usar bibliotecas compartidas externas que no están en la ruta de búsqueda de bibliotecas del sistema, establece
USE_SYSTEM_XXX=1
yLDFLAGS=-Wl,-rpath,/path/to/dir/contains/libXXX.so
enMake.user
. - En lugar de establecer
LDFLAGS
, poner el directorio de la biblioteca en la variable de entornoLD_LIBRARY_PATH
(tanto en tiempo de compilación como en tiempo de ejecución) también funciona. - Las banderas
USE_SYSTEM_*
deben usarse con precaución. Estas están destinadas únicamente para la solución de problemas, la portación y el empaquetado, donde los mantenedores de paquetes trabajan en estrecha colaboración con los desarrolladores de Julia para asegurarse de que Julia se construya correctamente. Los casos de uso en producción deben utilizar los binarios proporcionados oficialmente. Los problemas que surjan del uso de estas banderas generalmente no serán aceptados. - Vea también el external dependencies.
Architecture Customization
Julia se puede construir para una arquitectura no genérica configurando la variable ARCH
en un archivo Make.user
. Consulte la sección apropiada de Make.inc
para opciones de personalización adicionales, como MARCH
y JULIA_CPU_TARGET
.
Por ejemplo, para compilar para Pentium 4, establece MARCH=pentium4
e instala las bibliotecas del sistema necesarias para el enlace. En Ubuntu, estas pueden incluir lib32gfortran-6-dev, lib32gcc1 y lib32stdc++6, entre otras.
También puedes establecer MARCH=native
en Make.user
para una compilación de máximo rendimiento personalizada para la CPU actual de la máquina.
Linux Build Troubleshooting
Problem | Possible Solution |
---|---|
OpenBLAS build failure | Set one of the following build options in Make.user and build again: <ul><li> OPENBLAS_TARGET_ARCH=BARCELONA (AMD CPUs) or OPENBLAS_TARGET_ARCH=NEHALEM (Intel CPUs)<ul>Set OPENBLAS_DYNAMIC_ARCH = 0 to disable compiling multiple architectures in a single binary.</ul></li><li> OPENBLAS_NO_AVX2 = 1 disables AVX2 instructions, allowing OpenBLAS to compile with OPENBLAS_DYNAMIC_ARCH = 1 using old versions of binutils </li><li> USE_SYSTEM_BLAS=1 uses the system provided libblas <ul><li>Set LIBBLAS=-lopenblas and LIBBLASNAME=libopenblas to force the use of the system provided OpenBLAS when multiple BLAS versions are installed. </li></ul></li></ul><p> If you get an error that looks like ../kernel/x86_64/dgemm_kernel_4x4_haswell.S:1709: Error: no such instruction: `vpermpd $ 0xb1,%ymm0,%ymm0' , then you need to set OPENBLAS_DYNAMIC_ARCH = 0 or OPENBLAS_NO_AVX2 = 1 , or you need a newer version of binutils (2.18 or newer). (Issue #7653)</p><p> If the linker cannot find gfortran and you get an error like julia /usr/bin/x86_64-linux-gnu-ld: cannot find -lgfortran , check the path with gfortran -print-file-name=libgfortran.so and use the output to export something similar to this: export LDFLAGS=-L/usr/lib/gcc/x86_64-linux-gnu/8/ . See Issue #6150.</p> |
Illegal Instruction error | Check if your CPU supports AVX while your OS does not (e.g. through virtualization, as described in this issue). |