Building 32-Bit on a 64-Bit system

7,429

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.

Share:
7,429

Related videos on Youtube

Player 3
Author by

Player 3

I make stuff that grows on sockets. Concurrency is my main field of interest. I prefer expressions over statements, breaking abstractions in favor of clarity.

Updated on September 18, 2022

Comments

  • Player 3
    Player 3 over 1 year

    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?

  • saravanakumar
    saravanakumar almost 8 years
    Hi,There was some issue in this images used in this answer!! Could you change it.