How to install ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr)
I installed Ubuntu 14.04 (Trusty Tahr) yesterday. Everything seems OK. But when I tried to compile some C code, I encounter the following error. The error seems to be due to the OS lacking the 32-bit architecture support. The error output is as following:
/usr/bin/ld: i386 architecture of input file `./libsc.a(ftl_msg.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_debug.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_str.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_cfg_common.o)' is incompatible with i386:x86-64 output
I used to apt-get install ia32-libs
when I was using Ubuntu 12.04 (Precise Pangolin). But what I know is that Ubuntu has removed the ia32-libs since Ubuntu 13.10 (Saucy Salamander). How can I fix this problem?
Solution 1:
You can try this to install the 32-bit library (not all in ia32-libs):
sudo apt-get install program:i386
sudo dpkg --add-architecture i386
may be required (if you haven't ever run that).
Or if you want to install the whole ia32-lib instead, try the following order:
sudo -i
cd /etc/apt/sources.list.d
echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs
PS: In this way, you can install ia32-libs
. However, we add the source of 13.04 instead, so, there may be some unknown problem. After installing ia32-libs
, I recommend you to remove the ia32-libs-raring.list
in /etc/apt/sources.list.d
, and do sudo apt-get update
.
If you want to fix the dependency of Android SDK, you can try this bellow:
sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1
Solution 2:
Install gcc multiple library.
sudo apt-get install gcc-multilib
Solution 3:
The best answer I have ever seen is How to run 32-bit applications on Ubuntu 64-bit?
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo ./adb
Solution 4:
I got it finally! Here is my way, and I hope it can help you :)
sudo apt-get install libc6:i386
sudo -i
cd /etc/apt/sources.list.d
echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs
rm /etc/apt/sources.list.d/ia32-libs-raring.list
apt-get update
exit
sudo apt-get install gcc-multilib
I don't know the reason why I need to install these, but it works on my computer. When you finish installing these packages, it's time to try. Oh yes, I need to tell you. This time when you want to compile your code, you should add -m32
after gcc
, for example: gcc -m32 -o hello helloworld.c
. Just make clean
and make
again. Good luck friends.
PS: my environment is: Ubuntu 14.04 64-bit (Trusty Tahr) and GCC version 4.8.4. I have written the solution in my blog, but it is in Chinese :-) - How to compass 32bit programm under ubuntu14.04.