scipyのダウンロード用Webページは、ビルドとインストール手順を提供するために使用されるが、そこの指示は今OSのバイナリディストリビューションに依存しています。必要なライブラリーのプリコンパイル済みパッケージなしでオペレーティングシステム上でSciPy(およびNumPy)をビルドするには、ビルドしてから、FortranライブラリーBLASおよびLAPACKに静的にリンクする必要があります。
mkdir -p ~/src/
cd ~/src/
wget http://www.netlib.org/blas/blas.tgz
tar xzf blas.tgz
cd BLAS-*
## NOTE: The selected Fortran compiler must be consistent for BLAS, LAPACK, NumPy, and SciPy.
## For GNU compiler on 32-bit systems:
#g77 -O2 -fno-second-underscore -c *.f # with g77
#gfortran -O2 -std=legacy -fno-second-underscore -c *.f # with gfortran
## OR for GNU compiler on 64-bit systems:
#g77 -O3 -m64 -fno-second-underscore -fPIC -c *.f # with g77
gfortran -O3 -std=legacy -m64 -fno-second-underscore -fPIC -c *.f # with gfortran
## OR for Intel compiler:
#ifort -FI -w90 -w95 -cm -O3 -unroll -c *.f
# Continue below irrespective of compiler:
ar r libfblas.a *.o
ranlib libfblas.a
rm -rf *.o
export BLAS=~/src/BLAS-*/libfblas.a
5つのg77 / gfortran / ifortコマンドの1つだけを実行します。私はすべてコメントアウトしましたが、使用しているgfortranは除きます。後続のLAPACKインストールにはFortran 90コンパイラが必要です。両方のインストールで同じFortranコンパイラを使用する必要があるため、BLASにg77を使用しないでください。
次に、LAPACKのものをインストールする必要があります。SciPyウェブページの説明もここで役に立ちましたが、環境に合わせて変更する必要がありました。
mkdir -p ~/src
cd ~/src/
wget http://www.netlib.org/lapack/lapack.tgz
tar xzf lapack.tgz
cd lapack-*/
cp INSTALL/make.inc.gfortran make.inc # On Linux with lapack-3.2.1 or newer
make lapacklib
make clean
export LAPACK=~/src/lapack-*/liblapack.a
2015年9月3日の更新:本日いくつかのコメントを確認しました(すべてに感謝):実行make lapacklib
する前に、make.inc
ファイルを編集して-fPIC
オプションOPTS
とNOOPT
設定を追加します。64ビットアーキテクチャを使用している場合、または64ビットアーキテクチャ用にコンパイルする場合は、も追加し-m64
ます。BLASとLAPACKは、これらのオプションを同じ値に設定してコンパイルすることが重要です。-fPIC
SciPy を忘れると、実際にはシンボルの欠落に関するエラーが表示され、このスイッチが推奨されます。の特定のセクションはmake.inc
、私のセットアップでは次のようになります。
FORTRAN = gfortran
OPTS = -O2 -frecursive -fPIC -m64
DRVOPTS = $(OPTS)
NOOPT = -O0 -frecursive -fPIC -m64
LOADER = gfortran
古いマシン(RedHat 5など)では、gfortranが古いバージョン(4.1.2など)でインストールされている可能性があり、optionを認識しません-frecursive
。make.inc
このような場合は、ファイルから削除してください。
Makefileのlapackテストターゲットは、blasライブラリが見つからないため、セットアップで失敗します。完全な場合は、一時的にライブラリを指定の場所に移動して、ラパックをテストできます。私は怠惰な人間なので、開発者がそれを機能させ、SciPyでのみ検証することを信頼しています。