Trang web SciPy được sử dụng để cung cấp các hướng dẫn xây dựng và cài đặt, nhưng các hướng dẫn hiện có dựa trên các bản phân phối nhị phân của HĐH. Để xây dựng SciPy (và NumPy) trên các hệ điều hành mà không có các gói được biên dịch sẵn của các thư viện cần thiết, bạn phải xây dựng và sau đó liên kết tĩnh với các thư viện Fortran BLAS và 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
Chỉ thực hiện một trong năm lệnh g77 / gfortran / ifort. Tôi đã nhận xét tất cả, nhưng gfortran mà tôi sử dụng. Quá trình cài đặt LAPACK tiếp theo yêu cầu trình biên dịch Fortran 90 và vì cả hai cài đặt nên sử dụng cùng một trình biên dịch Fortran, nên không nên sử dụng g77 cho BLAS.
Tiếp theo, bạn sẽ cần cài đặt công cụ LAPACK. Các hướng dẫn của trang web SciPy cũng giúp tôi ở đây, nhưng tôi phải sửa đổi chúng cho phù hợp với môi trường của mình:
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
Cập nhật vào ngày 3 tháng 9 năm 2015: Đã xác minh một số nhận xét hôm nay (cảm ơn tất cả): Trước khi chạy make lapacklib
chỉnh sửa make.inc
tệp và thêm -fPIC
tùy chọn OPTS
và NOOPT
cài đặt. Nếu bạn đang ở trên một kiến trúc 64 bit hoặc muốn biên dịch cho một kiến trúc, hãy thêm -m64
. Điều quan trọng là BLAS và LAPACK được biên dịch với các tùy chọn này được đặt thành cùng một giá trị. Nếu bạn quên -fPIC
SciPy thực sự sẽ cung cấp cho bạn một lỗi về các ký hiệu bị thiếu và sẽ đề xuất chuyển đổi này. Phần cụ thể make.inc
trông như thế này trong thiết lập của tôi:
FORTRAN = gfortran
OPTS = -O2 -frecursive -fPIC -m64
DRVOPTS = $(OPTS)
NOOPT = -O0 -frecursive -fPIC -m64
LOADER = gfortran
Trên các máy cũ (ví dụ RedHat 5), gfortran có thể được cài đặt trong phiên bản cũ hơn (ví dụ 4.1.2) và không hiểu tùy chọn -frecursive
. Đơn giản chỉ cần loại bỏ nó khỏi make.inc
tập tin trong những trường hợp như vậy.
Mục tiêu kiểm tra lapack của Makefile không thành công trong thiết lập của tôi vì nó không thể tìm thấy các thư viện blas. Nếu bạn kỹ lưỡng, bạn có thể tạm thời di chuyển thư viện blas đến vị trí đã chỉ định để kiểm tra lapack. Tôi là một người lười biếng, vì vậy tôi tin tưởng các nhà phát triển sẽ làm cho nó hoạt động và chỉ xác minh trong SciPy.