如何在Ubuntu 14.04 LTS(Trusty Tahr)中安装ia32-libs

我昨天安装了Ubuntu 14.04(Trusty Tahr)。 一切似乎都OK。 但是当我试图编译一些C代码时,遇到以下错误。 错误似乎是由于操作系统缺乏32位体系结构的支持。 错误输出如下:

/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 

当我使用Ubuntu 12.04(Precise Pangolin)时,我习惯apt-get install ia32-libs 。 但是我知道的是,Ubuntu从Ubuntu 13.10(Saucy Salamander)中删除了ia32-libs。 我该如何解决这个问题?

你可以尝试这个来安装32位库(不是所有的ia32-libs):

 apt-get install program:i386 

或者,如果您想要安装整个ia32-lib,请尝试以下顺序:

 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:这样,你可以安装ia32-libs 。 但是,我们增加了13.04的来源,所以,可能有一些未知的问题。 安装ia32-libs ,我build议你删除/etc/apt/sources.list.d中的ia32-libs-raring.list ,并执行sudo apt-get update


如果你想修复Android SDK的依赖关系,你可以试试下面这个:

sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1

安装gcc多库。

 sudo apt-get install gcc-multilib 

我见过的最好的答案是如何在Ubuntu 64位上运行32位应用程序?

 sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 sudo ./adb 

我终于明白了! 这是我的方式,我希望它可以帮助你:)

 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 

我不知道为什么我需要安装这些,但它在我的电脑上工作。 当你完成安装这些软件包,是时候尝试。 哦,是的,我需要告诉你。 这次当你想编译你的代码时,你应该在gcc之后加上-m32 ,例如: gcc -m32 -o hello helloworld.c 。 只要make clean ,再做。 祝你好运的朋友。

PS:我的环境是:Ubuntu 14.04 64位(Trusty Tahr)和GCC 4.8.4版本。 我在我的博客上写了这个解决scheme,但是它是中文的:-) – 如何在ubuntu14.04下罗列32位的程序 。

这些替代库为我工作:

 sudo apt-get update sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6 

我有和上面一样的问题, Eclipsebuild议安装:

 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" 

当我试图安装ia32-libs时,Ubuntu提示安装另外三个软件包:

 $ 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 

使用Android Studio和intellij,我也必须安装libstdc ++ 6的32位版本:

 sudo apt-get install lib32stdc++6 

对我来说,我必须跑步

 sudo dpkg --add-architecture i386 

在运行正确的答案之前。 否则,我不能安装ia32-libs。

只需安装32位版本的程序,而不是64位版本。

这比安装不适合分发的软件包安全得多。

我从Ubuntu 14.04的Google Earth安装说明中得到了这个build议。 Google地球曾经在64位Ubuntu 12.04下使用ia32-libs

引用webupd8.org :

从Ubuntu 13.10开始,Ubuntu不再提供ia32-libs软件包。 这个软件包已被多种架构所取代,所以你不再需要它,但是一些64位软件包(实际上是32位应用程序)依然依赖于这个软件包,因此,它们不能安装在Ubuntu 14.04或13.10中, 64位。 […]

根据ia32-libs安装这些应用程序的正确方法或者更具体地说,就是简单地在Ubuntu 64bit上安装32位软件包。 当然,这将安装相当多的32位软件包,但这是多元化的工作原理。

一些程序(如Google Earth)的问题是32位软件包不支持多元化。 因此,需要手动安装一些32位依赖项以使该程序的32位版本在Ubuntu 64位上运行。

 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 
 sudo -i cd /etc/apt/sources.list.d echo "deb http://archive.ubuntu.com/ubuntu/ precise 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 

如果你在中国,你可以修改“raring”到“精确”(分别为Ubuntu 13.04 (Raring Ringtail)和Ubuntu 12.04 LTS(Precise Pangolin) )。 我在Ubuntu 14.04上安装了Beyond Compare (Trusty Tahr)。

问题是,在许多情况下,这些软件包已经是多层的,所以i386软件包不可用,但其他软件包仍然只依赖于i386软件包。 这是存储库中的问题,并且回购的pipe理员应该修复它

一个解决scheme是添加相应的Debian软件包的方式到您的存储库。 为此,请input以下命令:

 echo "deb ftp.us.debian.org/debian wheezy main" >> /etc/apt/sources.list sudo apt-get update sudo apt-get install ia32-libs-i386 

第一行在sources.list文件的结尾写入包的方式。 这对我有用。 我希望能帮到你。