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?
Check the multiarch information for Ubuntu. You can append :i386 to a package name to install the 32bit version of it.
I have exactly this problem, i need the ia32-libs for running fortinet vpn client, it worked perfectly under 10.04 LTS and 12.04 LTS. I tried ‘sudo apt-get install ia32-libs:i386’ but doesn’t work, i’ve also installed the ‘lib32z1 lib32ncurses5 lib32bz2-1.0’ packages but they don’t work.
@javaPhobic I decide to install ubuntu12.04(32bit). About my question, I have got some answers. They are not my keys, but may give help to you. 1. you can try make clean then make your code again. 2. you can try to install whole ia32-libs, just like what Mike Tang’s answer. 3. you can try to add «-m32` when you compass your code, for example: gcc -m32 helloworld.c . Good luck.
I’m voting to close this question as off-topic because its about the location of libraries for linux. While tangentially about programming, the solution will be more of a linux configuration answer, not a programming one.
11 Answers 11
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
I couldn’t access archive.ubuntu.com. Lots of not found while apt-get update . So I changed the package source to deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse . Now it works.
Raring archive is not available on the ubuntu archive anymore. I changed the raring archive for the precise archive. Package ia32-libs will install now.
the second line is echo «deb old-releases.ubuntu.com/ubuntu raring main restricted universe multiverse» >/etc/apt/sources.list.d/ia32-libs-raring.list
Install gcc multiple library.
sudo apt-get install gcc-multilib
This gcc-multilib meta package in 14.04 is the closest drop-in replacement for the ia32-libs meta package that was in 12.04 that I have encountered so far, but it still doesn’t satisfy package dependencies that are explicitly set to ia32-libs.
Can’t upvote this enough. This and libstdc++6-4.7-dev:i386 is required to extract the Internet Explorer virtual machines from www.modern.ie
Thanks to this post and this: unix.stackexchange.com/questions/407432/… i was able to setup my Brother DCP J152 as printer in CUPS. Thanks!!
sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 sudo ./adb
It was totally a problem with my adb (packed with clockworkmod carbon/helium). Thanks for that answer which was spot on for my problem (maybe not OP problem, though ^^). And anyway, this answer seems to me to be the cleaner. No adding previous previous ubuntu version repository link, which will create a big mess afterwards I’m sure…
This also did the trick for me, where I got the unhelpful (and hardly any Google results too, so pray this gets indexed) error «error while loading shared libraries: libncurses.so.5». Thanks!
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.
It’s probably obvious to anyone actually having to do this, but don’t put the «/» in the rm statement.
-1: While this works, it is really bad practice. There are much better solutions in this AskUbuntu post that don’t require installing old repositories. This method should only be needed for very old binary packages. But as you have the source code, this method is really not appropriate.
Raring archive is not available on the ubuntu archive anymore. I changed the raring archive for the precise archive. Package ia32-libs will install now.
-1 for me too. You will face a ton of problems with dependencies coming from 2 versions. Even if you removed the raring references afterwards. Totally agree with @jmiserez.
These alternative libraries worked for me:
sudo apt-get update sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
I had the same problem as above and Eclipse suggested installing:
Hint: On 64-bit systems, make sure the 32-bit libraries are installed: "sudo apt-get install ia32-libs" or on some systems, "sudo apt-get install lib32z1"
When I tried to install ia32-libs, Ubuntu prompted to install three other packages:
$ sudo apt-get install ia32-libs Reading package lists. Done Building dependency tree Reading state information. Done Package ia32-libs is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: lib32z1 lib32ncurses5 lib32bz2-1.0 E: Package 'ia32-libs' has no installation candidate $ $ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
With Android Studio and intellij, I also had to install the 32bit version of libstdc++6:
sudo apt-get install lib32stdc++6
sudo dpkg --add-architecture i386
before running Mike Tang’s answer. Otherwise, I can’t install ia32-libs.
Simply install the 32-bit version of the program, instead of the 64-bit version.
This is much safer than installing packages that are not intended for the distribution at hand.
I got this suggestion from the Google Earth installation instructions for Ubuntu 14.04. Google Earth used to employ ia32-libs under 64-bit Ubuntu 12.04.
The ia32-libs package is no longer available in Ubuntu, starting with Ubuntu 13.10. The package was superseded by multiarch support so you don’t need it any more, but some 64bit packages (which are actually 32bit applications) still depend on this package and because of this, they can’t be installed in Ubuntu 14.04 or 13.10, 64bit. [. ]
The «fix» or more specifically the correct way of installing these apps which depend on ia32-libs is to simply install the 32bit package on Ubuntu 64bit. Of course, that will install quite a few 32bit packages, but that’s how multiarch works.
The problem with some programs (like Google Earth) is that the 32-bit package does not support multiarch. Consequently, some 32-bit dependencies need to be installed manually to make the 32-bit version of the program run on Ubuntu 64-bit.
sudo dpkg --add-architecture i386 # only needed once sudo apt-get update sudo apt-get install libfontconfig1:i386 libx11-6:i386 libxrender1:i386 libxext6:i386 libgl1-mesa-glx:i386 libglu1-mesa:i386 libglib2.0-0:i386 libsm6:i386
Linux 32 bit libs
All our software is compiled as 32-bit binaries. It can run on either 32-bit or 64-bit Linux systems. However, if you are running 64-bit system, you may need to install a minimum set of 32-bit system libraries, which include libc (required for all programs) and libX11 (required for Graphical User Interface).
If you do not have these libraries installed, the best way is to consult the documentation for your Linux distribution on how to install them. Below are the instruction for most common Linux distributions, but since Linux distributions are constantly evolving, the instructions may not be up to date.
While installing the libraries, you will need root privileges, so either log in as root or use the sudo command.
Use the following commands:
#yum install glibc.i686
#yum install libgcc.i686
#yum install libX11.i686
Use the following commands:
#dpkg —add-architecture i386
#apt-get update
#apt-get install libc6:i386
#apt-get install libX11-6:i386
Use the following commands:
#yum install glibc.i686
#yum install libgcc.i686
#yum install libX11.i686
All the necessary libraries must be already installed. If not, follow the instructions for Ubuntu.
libc should be already installed. To install libX11 , use the following command:
libc should be already installed. To install libX11 , use the following command:
#zypper install libX11-6-32bit
Visit this page and follow instruction contained therein. If you do not want to download everything, you can install only the following packages:
- gcc_ . _multilib
- glibc_ . _multilib
- libX11-compat32 .
- libxcb-compat32 .
- libXau-compat32 .
- libXdmcp-compat32 .
To install these packages, download them, then for each package execute:
#upgradepkg —reinstall [full package file name here]
#upgradepkg —install-new [full package file name here]
Use the following commands:
#dpkg —add-architecture i386
#apt-get update
#apt-get install libc6:i386
#apt-get install libX11-6:i386
© 2007-2023 Northern Software Inc. All Rights Reserved.