Strona internetowa SciPy była używana do dostarczania instrukcji kompilacji i instalacji, ale teraz instrukcje tam opierają się na dystrybucjach binarnych systemu operacyjnego. Aby zbudować SciPy (i NumPy) w systemach operacyjnych bez prekompilowanych pakietów wymaganych bibliotek, musisz zbudować, a następnie statycznie połączyć się z bibliotekami Fortran BLAS i 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
Wykonaj tylko jedno z pięciu poleceń g77 / gfortran / ifort. Skomentowałem wszystko oprócz gfortranu, którego używam. Kolejna instalacja LAPACK wymaga kompilatora Fortran 90 , a ponieważ obie instalacje powinny używać tego samego kompilatora Fortran, g77 nie powinien być używany dla BLAS.
Następnie musisz zainstalować rzeczy LAPACK. Instrukcje ze strony SciPy również mi pomogły, ale musiałem je zmodyfikować, aby pasowały do mojego środowiska:
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
Aktualizacja w dniu 3 września 2015 r .: Zweryfikowano dziś niektóre komentarze (dzięki wszystkim): Przed uruchomieniem make lapacklib
edytuj make.inc
plik i dodaj -fPIC
opcję OPTS
i NOOPT
ustawienia. Jeśli korzystasz z architektury 64-bitowej lub chcesz ją skompilować, dodaj również -m64
. Ważne jest, aby BLAS i LAPACK zostały skompilowane z tymi opcjami ustawionymi na te same wartości. Jeśli zapomnisz, -fPIC
SciPy faktycznie wyświetli błąd dotyczący brakujących symboli i zaleci ten przełącznik. Konkretna sekcja make.inc
wygląda tak w mojej konfiguracji:
FORTRAN = gfortran
OPTS = -O2 -frecursive -fPIC -m64
DRVOPTS = $(OPTS)
NOOPT = -O0 -frecursive -fPIC -m64
LOADER = gfortran
Na starych maszynach (np. RedHat 5) gfortran może być zainstalowany w starszej wersji (np. 4.1.2) i nie obsługuje opcji -frecursive
. make.inc
W takich przypadkach po prostu usuń go z pliku.
Cel testu lapack pliku Makefile nie działa w mojej konfiguracji, ponieważ nie może znaleźć bibliotek blas. Jeśli jesteś dokładny, możesz tymczasowo przenieść bibliotekę blas do określonej lokalizacji, aby przetestować lapack. Jestem leniwym człowiekiem, więc ufam programistom, że będą działać i weryfikować tylko w SciPy.