La pagina Web SciPy era utilizzata per fornire istruzioni di costruzione e installazione, ma le istruzioni lì ora si basano sulle distribuzioni binarie del sistema operativo. Per compilare SciPy (e NumPy) su sistemi operativi senza pacchetti precompilati delle librerie richieste, è necessario compilare e quindi collegarsi staticamente alle librerie Fortran BLAS e 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
Esegui solo uno dei cinque comandi g77 / gfortran / ifort. Ho commentato tutto, ma il gfortran che uso. La successiva installazione di LAPACK richiede un compilatore Fortran 90 e poiché entrambe le installazioni devono utilizzare lo stesso compilatore Fortran, g77 non deve essere utilizzato per BLAS.
Successivamente, dovrai installare le cose LAPACK. Le istruzioni della pagina web di SciPy mi hanno aiutato anche qui, ma ho dovuto modificarle per adattarle al mio ambiente:
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
Aggiornamento del 3-set-2015: verificati alcuni commenti oggi (grazie a tutti): prima di eseguire make lapacklib
modificare il make.inc
file e aggiungere -fPIC
opzioni OPTS
e NOOPT
impostazioni. Se si utilizza un'architettura a 64 bit o si desidera compilare per una, aggiungere anche -m64
. È importante che BLAS e LAPACK siano compilati con queste opzioni impostate sugli stessi valori. Se dimentichi che -fPIC
SciPy ti darà effettivamente un errore sui simboli mancanti e ti consiglierà questo interruttore. La sezione specifica di make.inc
assomiglia a questa nella mia configurazione:
FORTRAN = gfortran
OPTS = -O2 -frecursive -fPIC -m64
DRVOPTS = $(OPTS)
NOOPT = -O0 -frecursive -fPIC -m64
LOADER = gfortran
Su macchine vecchie (ad es. RedHat 5), gfortran potrebbe essere installato in una versione precedente (ad es. 4.1.2) e non comprende l'opzione -frecursive
. Basta rimuoverlo dal make.inc
file in questi casi.
Il target del test del lapack del Makefile fallisce nella mia configurazione perché non riesce a trovare le librerie blas. Se sei accurato, puoi spostare temporaneamente la libreria blas nella posizione specificata per testare il lapack. Sono una persona pigra, quindi mi fido degli sviluppatori di farlo funzionare e verificare solo in SciPy.