Linux

  • Julia'yı derlemek için GCC sürümü 4.7 veya daha yenisi gereklidir.
  • Dış paylaşılan kütüphaneleri sistem kütüphane arama yolunda olmayanları kullanmak için, Make.user dosyasında USE_SYSTEM_XXX=1 ve LDFLAGS=-Wl,-rpath,/path/to/dir/contains/libXXX.so ayarlarını yapın.
  • LDFLAGS ayarlamak yerine, kütüphane dizinini LD_LIBRARY_PATH ortam değişkenine (hem derleme hem de çalışma zamanında) koymak da işe yarar.
  • USE_SYSTEM_* bayrakları dikkatle kullanılmalıdır. Bunlar yalnızca sorun giderme, taşınma ve paketleme için tasarlanmıştır; burada paket bakımcıları, Julia'nın doğru bir şekilde derlendiğinden emin olmak için Julia geliştiricileriyle yakın çalışır. Üretim kullanım durumları resmi olarak sağlanan ikili dosyaları kullanmalıdır. Bu bayrakların kullanımından kaynaklanan sorunlar genellikle kabul edilmeyecektir.
  • Ayrıca external dependencies'e bakın.

Architecture Customization

Julia, bir genel olmayan mimari için Make.user dosyasında ARCH Makefile değişkenini yapılandırarak oluşturulabilir. Ek özelleştirme seçenekleri için Make.inc'in ilgili bölümüne bakın, örneğin MARCH ve JULIA_CPU_TARGET.

Örneğin, Pentium 4 için derlemek üzere MARCH=pentium4 ayarını yapın ve bağlantı için gerekli sistem kütüphanelerini kurun. Ubuntu'da bunlar arasında lib32gfortran-6-dev, lib32gcc1 ve lib32stdc++6 gibi kütüphaneler bulunabilir.

Make.user dosyasına MARCH=native ayarını da yaparak mevcut makine CPU'su için özelleştirilmiş maksimum performanslı bir derleme gerçekleştirebilirsiniz.

Linux Build Troubleshooting

ProblemPossible Solution
OpenBLAS build failureSet 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 errorCheck if your CPU supports AVX while your OS does not (e.g. through virtualization, as described in this issue).