7

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?

Caleb
  • 69,278
  • 18
  • 196
  • 226
thwd
  • 203
  • 2
  • 7

1 Answers1

7

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.

Glorfindel
  • 805
  • 2
  • 10
  • 19
Gilles 'SO- stop being evil'
  • 807,993
  • 194
  • 1,674
  • 2,175
  • Hi,There was some issue in this images used in this answer!! Could you change it. – saravanakumar Jun 22 '16 at 06:01
  • @saravanakumar Done. If you see links to http://bit.ly/software-small please update them to http://hostmar.co/software-small , unfortunately the old URL no longer works. http://meta.askubuntu.com/questions/548/how-to-post-links-that-integrate-with-the-software-center – Gilles 'SO- stop being evil' Jun 22 '16 at 07:04