Linux
- GCC-Version 4.7 oder höher wird benötigt, um Julia zu erstellen.
- Um externe Shared Libraries zu verwenden, die sich nicht im Suchpfad der Systembibliotheken befinden, setzen Sie
USE_SYSTEM_XXX=1
undLDFLAGS=-Wl,-rpath,/path/to/dir/contains/libXXX.so
inMake.user
. - Anstatt
LDFLAGS
festzulegen, funktioniert es auch, das Bibliotheksverzeichnis in die UmgebungsvariableLD_LIBRARY_PATH
(sowohl zur Compile- als auch zur Laufzeit) einzufügen. - Die
USE_SYSTEM_*
-Flags sollten mit Vorsicht verwendet werden. Diese sind nur für Fehlersuche, Portierung und Verpackung gedacht, bei denen Paketbetreuer eng mit den Julia-Entwicklern zusammenarbeiten, um sicherzustellen, dass Julia korrekt gebaut wird. Produktionsanwendungen sollten die offiziell bereitgestellten Binärdateien verwenden. Probleme, die aus der Verwendung dieser Flags entstehen, werden in der Regel nicht akzeptiert. - Siehe auch die external dependencies.
Architecture Customization
Julia kann für eine nicht-generische Architektur erstellt werden, indem die ARCH
Makefile-Variable in einer Make.user
-Datei konfiguriert wird. Siehe den entsprechenden Abschnitt von Make.inc
für zusätzliche Anpassungsoptionen, wie MARCH
und JULIA_CPU_TARGET
.
Um beispielsweise für Pentium 4 zu kompilieren, setzen Sie MARCH=pentium4
und installieren Sie die erforderlichen Systembibliotheken für das Linking. Unter Ubuntu können diese lib32gfortran-6-dev, lib32gcc1 und lib32stdc++6 sowie andere umfassen.
Sie können auch MARCH=native
in Make.user
festlegen, um einen leistungsmaximierten Build zu erstellen, der auf die aktuelle Maschinen-CPU zugeschnitten ist.
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). |