Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

-m32 option doesn't work with gcc but works with g++

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!



like image 329
SArora Avatar asked Dec 19 '22 19:12

SArora


2 Answers

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++.

like image 143
SArora Avatar answered Jan 07 '23 21:01

SArora


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.

like image 45
72DFBF5B A0DF5BE9 Avatar answered Jan 07 '23 20:01

72DFBF5B A0DF5BE9