I'm trying to build the PHP memcache extension (v2.2.6) for i386 (32bit) on my x86_64 Ubuntu 11.04.

./configure uses config.guess by default (which outputs x86_64-unknown-linux-gnu on my system) but I want to override that.

How would I have to proceed?


You need two things to cross-compile: a compiler that can generate code for the target architecture, and the static libraries (*.a) for the target architecture. Install at least the libc6-dev-i386 Install libc6-dev-i386 packages, and possibly other lib32.*-dev packages. The libc6-dev-i386 also pulls in the components of gcc needed for cross-compilation in the gcc-multilib package Install gcc-multilib. Then tell gcc to compile for i386 by passing it the -m32 flag through the CFLAGS variable.

sudo apt-get install libc6-dev-i386 lib32ncurses5-dev … # whatever 32-bit libraries you need
export CFLAGS='-m32'
./configure …

If you don't find all the libraries you need, it'll probably be easier to install a 32-bit Ubuntu in a chroot. Ubuntu ships dchroot Install dchroot from the Debian buildd project, which makes running a chrooted system easy. Use debootstrap Install debootstrap to perform the installation. There's a reasonable-looking dchroot tutorial on the Ubuntu forums.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.