As a follow up, here's an explanation of how to do this without pip or virtualenv. To do it with virtualenv, just place the wrapper scripts in your virtualenv's bin directory:
To build python: Install python build dependencies (on Centos 6). Make sure to get the i686 packages: tk-devel, tcl-devel, libX11-devel, libXau-devel, sqlite-devel, gdbm-devel, readline-devel, zlib-devel, bzip2-devel, openssl-devel, krb5-devel, ncurses-devel, valgrind-devel, valgrind, libxcb-devel, libXft-devel, tk CFLAGS="-g -O2 -m32" LDFLAGS="-m32 -Wl,-rpath,/opt/python/ia32/ lib" ./configure --enable-unicode=ucs4 --enable-shared --prefix=/opt/python/ia32 --with-valgrind make make testall To build numpy: Install numpy dependencies: atlas-devel, lapack-devel, blas-devel, libgfortran Now you just need to use some compiler wrappers, so the "setup.py build" command will append the -m32 to flag to every call to the compilers. You need to wrap gcc and gfortran, and possibly g++ as well. Place the wrapper scripts and a link to your python executable in a directory, e.g. ~/bin. You could also use virtualenv to make this easier: cd ~/bin ln -sfn /opt/python/ia32/bin/python touch gcc g++ gfortan chmod u+x gcc g++ gfortran Now edit the wrapper scripts: #### gcc #### #!/bin/sh /usr/bin/gcc -m32 "$@" #### g++ #### #!/bin/sh /usr/bin/gcc -m32 "$@" #### gfotran #### #!/bin/sh /usr/bin/gfortan -m32 "$@" Add ~/bin to the front of your path: export PATH=$HOME/bin:$PATH Build numpy: python setup.py build On Thu, Dec 12, 2013 at 1:58 PM, David Jones <[email protected]>wrote: > I'm trying to compile 32-bit numpy on a 64 bit Centos 6 system, but fails > with the message: > > "Broken toolchain: cannot link a simple C program" > > It get's the compile flags right, but not the linker: > > C compiler: gcc -pthread -fno-strict-aliasing -g -O2 -m32 -DNDEBUG -g > -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC > compile options: '-Inumpy/core/src/private -Inumpy/core/src -Inumpy/core > -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath > -Inumpy/core/src/npysort -Inumpy/core/include > -I/opt/python/ia32/include/python2.7 > -c' > gcc: _configtest.c > gcc -pthread _configtest.o -o _configtest > _configtest.o: could not read symbols: File in wrong format > collect2: ld returned 1 exit status > > I'm bulding it using a 32bit python build that I compiled on the same > system. > > I tried: > > OPT="-m32" FOPT="-m32" python setup.py build > > and > > setarch x86_64 -B python setup.py build > > But with the same results. > > > Someone worked around this by altering ccompiler.py, but I'm trying to > find a cleaner solution. > > See:http://stackoverflow.com/questions/11265057/how-do-i- > install-a-32-bit-version-of-numpy > > Is there a standard way of doing this? > > Regards, > David J. > >
_______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
