[SciPy-dev] Building numpy/scipy on RHEL5 OR CentOS5

Phil Austin phaustin@gmail....
Mon Jun 23 11:50:37 CDT 2008

Michael Hearne wrote:
> I've been wrestling with installing scipy (in any form - binary, source, 
> egg, rpm) on some RHEL5 machines that I am compelled to work with, and 
> have failed miserably.   I noticed a thread a few months back about 
> building scipy on CentOS 5, and noticed that at least one of the 
> respondents indicated he'd had success.  As I understand it, CentOS 
> strives for binary compatibility with RHEL, so I'm hopeful that CentOS 
> solutions will work for me.

I do this pretty regularly with numpy/scipy/matplotlib from svn
for Centos 5.1 on x86_64.  I build ATLAS and lapack from scratch
but use the fftw3 rpms

~ phil@owl% rpm -qa | grep fftw3

The major problem I encountered compared to earlier builds with
Mandrake was the fact that 'fPIC' needs to be explicitly passed
to every fortran, C and C++ compiler call.  There is a bug in
the lapack makefile, for example, that drops 'fPIC' from 4 lapack
compile statements (out of hundreds) and these have to
recompiled by hand  (See step 3 below).

The following is a cut and paste from a fairly disorganized set
of notes.

1) build python

export CPPFLAGS='-fPIC'
export CFLAGS='-fPIC'
export FFLAGS='-fPIC'

./configure --prefix=/users/user-soft/usr251_Centos

make install

2) build ATLAS

mkdir build
cd build
/home/datatmp/phil/install/ATLAS/mybuild phil@owl% \
../configure --prefix=/home/phil/usr251_Centos \
        --cflags='-fPIC'  -Fa alg -fPIC

make install

3) build LAPACK

for lapack: cp INSTALL/make.inc.LINUX  ~/install/lapack-3.1.1/make.inc
and edit:

FORTRAN  = gfortran
OPTS     = -funroll-all-loops -O3 -fPIC
NOOPT    =
LOADER   = gfortran

BLASLIB      = /home/phil/usr251_Centos/lib/libcblas.a
LAPACKLIB    = lapack$(PLAT).a
TMGLIB       = tmglib$(PLAT).a
EIGSRCLIB    = eigsrc$(PLAT).a
LINSRCLIB    = linsrc$(PLAT).a

!!and then rebuild these individual routines with fPIC -- recompile!

gfortran  -fPIC  -c slaruv.f -o slaruv.o
gfortran -fPIC -c dlaruv.f -o dlaruv.o


gfortran -fPIC -c slamch.f -o slamch.o
gfortran  -fPIC -c dlamch.f -o dlamch.o
gfortran  -fPIC -o testieee tstiee.o

make liblapack
make libblas  then
make all  -- to build vanilla blas and testing
make lapack_install -- to get statistics

Now merge ATLAS and lapack:

cd /home/datatmp/phil/install/ATLAS/mybuild/lib

     cp liblapack.a liblapack_orig.a
     mkdir tmp; cd tmp
     ar x ../liblapack.a
     cp ~/install/transport/lapack-3.1.1/lapack_LINUX.a ../liblapack.a
     ar r ../liblapack.a *.o
     cd ..; rm -rf tmp
     cp liblapack.a /home/phil/usr251_Centos/lib/


cp lapack_LINUX.a /home/phil/usr251_Centos/lib/liblapack.a
cp blas_LINUX.a /home/phil/usr251_Centos/lib/libblas.a

the edit numpy site.cfg and add the library locations:

# system_info.py searches atlas and lapack from the following paths
#   library_dir:DEFAULT/atlas*:DEFAULT/ATLAS*:DEFAULT
# where DEFAULT refers to library_dir defined in [DEFAULT] section and
#library_dirs = /usr/lib/3dnow      # Debian Sid
library_dirs = /home/phil/usr251_Centos/lib

# For overriding the names of the atlas libraries:
# atlas_libs = lapack, f77blas, cblas, atlas

library_dirs = /home/phil/usr251_Centos/lib

src_dirs = /home/phil/install/transport/lapack-3.1.1/SRC

library_dirs = /home/phil/usr251_Centos/lib

src_dirs = /home/datatmp/phil/install/ATLAS/src/blas

library_dirs = /usr/lib64/
fftw_libs = fftw3
#fftw_opt_libs = fftw_threaded, rfftw_threaded
# if the above aren't found, look for {s,d}fftw_libs and {s,d}fftw_opt_libs

4) build numpy

python setup.py build --fcompiler=gnu95
python setup.py install --fcompiler=gnu95  install

make sure site.cfg has been copied to


5) build scipy

python setup.py build --fcompiler=gnu95
python setup.py install --fcompiler=gnu95  install

More information about the Scipy-dev mailing list