Linux

  • Для сборки Julia требуется версия GCC 4.7 или новее.
  • Чтобы использовать внешние общие библиотеки, не находящиеся в пути поиска системных библиотек, установите USE_SYSTEM_XXX=1 и LDFLAGS=-Wl,-rpath,/path/to/dir/contains/libXXX.so в Make.user.
  • Вместо установки LDFLAGS, добавление каталога библиотеки в переменную окружения LD_LIBRARY_PATH (как во время компиляции, так и во время выполнения) также работает.
  • Флаги USE_SYSTEM_* следует использовать с осторожностью. Они предназначены только для устранения неполадок, портирования и упаковки, когда поддержка пакетов тесно сотрудничает с разработчиками Julia, чтобы убедиться, что Julia собрана правильно. В производственных случаях следует использовать официально предоставленные бинарные файлы. Проблемы, возникающие из-за использования этих флагов, как правило, не будут приниматься.
  • Смотрите также external dependencies.

Architecture Customization

Julia может быть собрана для неуниверсальной архитектуры, настроив переменную ARCH в файле Make.user. См. соответствующий раздел Make.inc для дополнительных параметров настройки, таких как MARCH и JULIA_CPU_TARGET.

Например, чтобы собрать для Pentium 4, установите MARCH=pentium4 и установите необходимые системные библиотеки для линковки. В Ubuntu это могут включать lib32gfortran-6-dev, lib32gcc1 и lib32stdc++6, среди прочих.

Вы также можете установить MARCH=native в Make.user для сборки с максимальной производительностью, настроенной для текущего процессора машины.

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).