4

I was trying to compile an application for 32 bit target on x86_64 ubuntu 12.04 machine. I installed the required packages using

sudo apt-get install gcc-multilib g++-multilib libc6-i386 libc6-dev-i386

The first command works generating the 32 bit version. However, the second command errors out

1. g++ -m32 hello.c 

2. gcc -m32 hello.c
skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s

Could anyone explain to me why gcc fails to work. Am I missing some libraries?

Thanks!



SArora
  • 173
  • 1
  • 10
  • Related: [Force gcc to compile 32 bit programs on 64 bit platform](https://stackoverflow.com/q/3501878) is the canonical Q&A about needing `gcc-multilib` for stuff to work. This Q&A seems to be about version mismatches. – Peter Cordes Jun 12 '22 at 22:08

2 Answers2

9

I upgraded my g++ to 4.8 and g++ -m32 stopped working too. Installing g++-4.8-multilib made -m32 option work with both gcc and g++.

SArora
  • 173
  • 1
  • 10
3

I think you need this package of Ubuntu:

sudo apt-get install ia32-libs

Also confirm that you are using gcc multilib with gcc -v. If not set path accordingly or re-install gcc-multilib.

72DFBF5B A0DF5BE9
  • 4,954
  • 3
  • 21
  • 24