32

I'm trying to compile a c program as a 32 bit binary instead of 64 bit. I started by just adding -m32 and got some errors. Googling around a little I came across a note to install ia32-libs. Running apt-get install ia32-libs resulted in a notification taht it was already installed and at the newest version.

There is a chain of libraries each one including the next until it fails:

/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory

It seems to be including 32 bit versions of the other includes /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/ ...

What am I missing?

3 Answers 3

73

Lekensteyn's answer conflicted with lots of existing packages for me (on 64-bit oneiric).

I instead did this, which pulled in the libc6-dev-i386 package:

sudo apt-get install gcc-multilib
0
7

ia32-libs just contains some compatibility libraries haven't been migrated yet to Multi Arch. For compiling 32-bit libraries, you need to install the 32-bit libraries and development files for C:

sudo apt-get install libc6-dev:i386

See also: Does the multiarch feature in 11.10 mean the death of force--architecture installs?

3
  • 1
    Installing libc6-dev:i386 insisted on removing the entire gnu compiler suite (which gave me a little heart attack) but after using sudo apt-get install build-essential everything worked perfectly.
    – Matt
    Jan 1, 2012 at 21:14
  • For me, it also uninstalled nvidia-current... reinstalled with no problems though.
    – Jeff
    May 12, 2012 at 2:48
  • 1
    Note that the option given by alberge seems better in that it won't remove tons of other things for installing the 32-bit libraries. Sep 7, 2012 at 18:53
0

For those from future, this is a ten-year old question. Sadly none of the above solutions work for me.

Here is a similar but rather new one How to compile 32-bit executable on 64 bit system, and the solution of this fresh post does solve my problem.

Just install this:

sudo apt install libc6-dev-i386

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .