Building 32-Bit on a 64-Bit system
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
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 . 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 from the Debian buildd project, which makes running a chrooted system easy. Use debootstrap to perform the installation. There's a reasonable-looking dchroot tutorial on the Ubuntu forums.
Related videos on Youtube
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, 2022Comments
-
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 outputsx86_64-unknown-linux-gnu
on my system) but I want to override that.How would I have to proceed?
-
saravanakumar almost 8 yearsHi,There was some issue in this images used in this answer!! Could you change it.