Linux
- Juliaをビルドするには、GCCバージョン4.7以降が必要です。
- 外部の共有ライブラリをシステムライブラリ検索パスに含まれていないものを使用するには、
Make.user
にUSE_SYSTEM_XXX=1
とLDFLAGS=-Wl,-rpath,/path/to/dir/contains/libXXX.so
を設定します。 LDFLAGS
を設定する代わりに、ライブラリディレクトリを環境変数LD_LIBRARY_PATH
に入れる(コンパイル時と実行時の両方で)ことも機能します。USE_SYSTEM_*
フラグは注意して使用する必要があります。これらは、トラブルシューティング、ポーティング、およびパッケージングのためのものであり、パッケージメンテナはJulia開発者と密接に連携して、Juliaが正しくビルドされることを確認します。プロダクションの使用ケースでは、公式に提供されたバイナリを使用するべきです。これらのフラグの使用から生じる問題は、一般的に受け入れられません。- 次も参照してください external dependencies。
Architecture Customization
Juliaは、Make.user
ファイル内のARCH
Makefile変数を設定することで、非汎用アーキテクチャ用にビルドできます。追加のカスタマイズオプションについては、Make.inc
の該当セクションを参照してください。例えば、MARCH
やJULIA_CPU_TARGET
などです。
例えば、Pentium 4用にビルドするには、MARCH=pentium4
を設定し、リンクのために必要なシステムライブラリをインストールします。Ubuntuでは、これにはlib32gfortran-6-dev、lib32gcc1、lib32stdc++6などが含まれる場合があります。
Make.user
に MARCH=native
を設定することで、現在のマシンの CPU に最適化された最大パフォーマンスのビルドを行うこともできます。
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). |