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ındaUSE_SYSTEM_XXX=1
veLDFLAGS=-Wl,-rpath,/path/to/dir/contains/libXXX.so
ayarlarını yapın. LDFLAGS
ayarlamak yerine, kütüphane dizininiLD_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
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). |