我昨天安装了Ubuntu 14.04(Trusty Tahr)。一切似乎都好。但是当我尝试编译一些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(精确穿山甲)时,我曾经apt-get install ia32-libs
。但据我所知,自Ubuntu 13.10(Saucy Salamander)以来,Ubuntu已经删除了ia32-libs。我该如何解决这个问题?
答案 0 :(得分:140)
你可以尝试这个来安装32位库(不是所有的ia32-libs):
sudo apt-get install program:i386
sudo dpkg --add-architecture 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
后,我建议您删除ia32-libs-raring.list
中的/etc/apt/sources.list.d
,然后执行sudo apt-get update
。
如果您想修复Android SDK的依赖关系,可以试试这个:
sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1
答案 1 :(得分:76)
安装gcc多库。
sudo apt-get install gcc-multilib
答案 2 :(得分:56)
我见过的最佳答案是 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
答案 3 :(得分:29)
我终于明白了!这是我的方式,我希望它可以帮助你:)。
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
我不知道我需要安装这些内容的原因,但它可以在我的计算机上运行。完成这些包的安装后,是时候尝试了。哦,是的,我需要告诉你。这次要编译代码时,应在-m32
之后添加gcc
,例如:gcc -m32 -o hello helloworld.c
。只需make clean
和make
。祝你好运。
PS:我的环境是:Ubuntu 14.04 64位(Trusty Tahr)和GCC 4.8.4版。我在我的博客中写过这个解决方案,但是用中文:-) - How to compass 32bit programm under ubuntu14.04。
答案 4 :(得分:20)
这些替代图书馆对我有用:
sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
答案 5 :(得分:17)
我遇到了与上述相同的问题,Eclipse建议安装:
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,我还必须安装32位版本的libstdc ++ 6:
sudo apt-get install lib32stdc++6
答案 6 :(得分:8)
对我来说,我必须跑
sudo dpkg --add-architecture i386
在运行Mike Tang的回答之前。否则,我无法安装ia32-libs。
答案 7 :(得分:4)
只需安装32位版本的程序,而不是64位版本。
这比安装不适合手头发行的软件包安全得多。
我从Google Earth installation instructions for Ubuntu 14.04得到了这个建议。
Google地球曾经在64位Ubuntu 12.04下使用ia32-libs
。
引用webupd8.org:
ia32-libs软件包在Ubuntu中不再可用,从 Ubuntu 13.10。该软件包已经被multiarch支持取代了 不再需要它,但有些64位软件包(实际上是 32位应用程序)仍然依赖于这个包,因此, 它们无法安装在Ubuntu 14.04或13.10,64bit中。 [...]
"修复"或者更具体地说是安装这些的正确方法 依赖于ia32-libs的应用程序就是简单地安装32位软件包 在Ubuntu 64bit上。当然,那将安装相当多的32位 包,但这就是多君主的工作原理。
某些程序(如Google Earth)的问题在于32位软件包没有 支持multiarch。因此,需要手动安装一些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
答案 8 :(得分:2)
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(Trusty Tahr)上安装了Beyond Compare。
答案 9 :(得分:1)
问题在于,在许多情况下,软件包已经是multiarch,因此i386软件包不可用,但其他软件包仍然只依赖于i386软件包。这是存储库中的问题,并且存储库的管理者应该修复它
答案 10 :(得分:0)
解决方案是将相应的Debian包方式添加到您的存储库。为此,请键入以下命令:
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
文件的末尾写入包的方式。
这适合我。我希望这对你有所帮助。