如何在 Ubuntu 14.04 LTS 中安装 ia32-libs (Trusty Tahr)
Posted
技术标签:
【中文标题】如何在 Ubuntu 14.04 LTS 中安装 ia32-libs (Trusty Tahr)【英文标题】:How to install ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr) 【发布时间】:2014-06-04 15:41:49 【问题描述】:我昨天安装了 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 (Precise Pangolin) 时,我曾经 apt-get install ia32-libs
。但我所知道的是,自 Ubuntu 13.10 (Saucy Salamander) 以来,Ubuntu 已经删除了 ia32-libs。我该如何解决这个问题?
【问题讨论】:
检查 Ubuntu 的多架构信息。您可以将 :i386 附加到包名称以安装它的 32 位版本。 我确实有这个问题,我需要 ia32-libs 来运行 fortinet *** 客户端,它在 10.04 LTS 和 12.04 LTS 下完美运行。我尝试了 'sudo apt-get install ia32-libs:i386' 但不起作用,我还安装了 'lib32z1 lib32ncurses5 lib32bz2-1.0' 软件包但它们不起作用。 @javaPhobic 我决定安装 ubuntu12.04(32bit)。关于我的问题,我得到了一些答案。它们不是我的钥匙,但可以帮助你。 1.您可以尝试make clean然后再次make您的代码。 2.您可以尝试安装整个 ia32-libs,就像 Mike Tang 的回答一样。 3.你可以尝试在你的代码中添加`-m32`,例如:gcc -m32 helloworld.c
。祝你好运。
这应该是服务器故障。
我投票结束这个问题,因为它是关于 linux 库的位置。虽然切线关于编程,但解决方案将更多是linux配置答案,而不是编程答案。
【参考方案1】:
你可以试试这个来安装 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
后,建议你把/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
【讨论】:
E: 包 'ia32-libs' 没有安装候选对象 我无法访问archive.ubuntu.com。apt-get update
时有很多 未找到。所以我把包源改成了deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse
。现在可以了。
Raring 存档在 ubuntu 存档中不再可用。我将稀有档案更改为精确档案。现在将安装包 ia32-libs。
不适用于 14.04。对我有用的解决方案是 Aleksei 的回答。
第二行是 echo "deb old-releases.ubuntu.com/ubunturaring main restricted universe multiverse" >/etc/apt/sources.list.d/ia32-libs-raring.list【参考方案2】:
安装 gcc 多个库。
sudo apt-get install gcc-multilib
【讨论】:
这个 14.04 中的 gcc-multilib 元包是我迄今为止遇到的 12.04 中 ia32-libs 元包的最接近的替代品,但它仍然不满足包依赖性明确设置为 ia32-libs。 对此赞不绝口。这和libstdc++6-4.7-dev:i386
是从 www.modern.ie 提取 Internet Explorer 虚拟机所必需的
这仍然适用于 Ubuntu 16.04(但我不知道它有多完整)
我还必须:sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
感谢这篇文章和这个:unix.stackexchange.com/questions/407432/… 我能够将我的 Brother DCP J152 设置为 CUPS 中的打印机。谢谢!!【参考方案3】:
我见过的最好的答案是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
【讨论】:
这完全是我的 adb 的问题(装有clockworkmod 碳/氦)。感谢您对我的问题的回答(也许不是 OP 问题,尽管 ^^)。无论如何,在我看来,这个答案更干净。不添加以前的 ubuntu 版本库链接,我敢肯定这会造成很大的混乱...... 这对我也有用,我得到了无用的(而且几乎没有任何谷歌结果,所以祈祷这被索引)错误“加载共享库时出错:libncurses.so.5”。谢谢! Ubuntu 14.04 的最佳答案,但不适用于 16.04【参考方案4】:我终于明白了!这是我的方法,希望对你有帮助:)
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
和make
。祝朋友好运。
PS:我的环境是:Ubuntu 14.04 64 位(Trusty Tahr)和 GCC 版本 4.8.4。我已经在我的博客中写了解决方案,但它是中文的:-) - How to compass 32bit programm under ubuntu14.04.
【讨论】:
这对任何人来说可能是显而易见的,但不要将“/”放在 rm 语句中。 是的,这是我的错误。我现在已经修好了。谢谢~@keefer -1:虽然这可行,但它是非常糟糕的做法。这个AskUbuntu post 中有更好的解决方案,不需要安装旧的存储库。只有非常旧的二进制包才需要此方法。但是因为你有源代码,所以这种方法确实不合适。 Raring 存档在 ubuntu 存档中不再可用。我将稀有档案更改为精确档案。现在将安装包 ia32-libs。 -1 对我来说也是如此。您将面临来自 2 个版本的依赖项的大量问题。即使您之后删除了稀有参考。完全同意@jmiserez。【参考方案5】:这些替代库对我有用:
sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
【讨论】:
【参考方案6】:我遇到了和上面一样的问题,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
【讨论】:
这对我来说似乎是解决方案,因为包 ia32-libs 已过时,但它可以工作! 这个lib32z1
是无价的【参考方案7】:
对我来说,我必须奔跑
sudo dpkg --add-architecture i386
在运行 Mike Tang 的答案之前。否则,我无法安装 ia32-libs。
【讨论】:
【参考方案8】:只需安装 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。该软件包已被多架构支持所取代,因此您 不再需要它,但是一些 64 位包(实际上是 32 位应用程序)仍然依赖于这个包,因此, 它们不能安装在 Ubuntu 14.04 或 13.10、64 位。 [...]
“修复”或更具体地说是安装这些的正确方法 依赖 ia32-libs 的应用程序只需安装 32 位软件包 在 64 位的 Ubuntu 上。当然,那会安装不少32bit 包,但这就是多架构的工作原理。
某些程序(如 Google 地球)的问题是 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
【讨论】:
【参考方案9】: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”修改为“precise”(分别对应Ubuntu 13.04(Raring Ringtail)和Ubuntu 12.04 LTS (Precise Pangolin))。我在 Ubuntu 14.04 (Trusty Tahr) 上安装了 Beyond Compare。
【讨论】:
【参考方案10】:问题在于,在许多情况下,这些包已经是多架构的,所以 i386 包不可用,但其他包仍然只依赖于 i386 包。这是存储库中的一个问题,存储库的管理员应该修复它
【讨论】:
【参考方案11】:解决方案是将相应的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
文件的末尾。
这对我有用。希望对您有所帮助。
【讨论】:
deb f t p : // f t p 。 u s .. etc ,它的作品,但没有解决我的问题(以上是关于如何在 Ubuntu 14.04 LTS 中安装 ia32-libs (Trusty Tahr)的主要内容,如果未能解决你的问题,请参考以下文章
如何在Ubuntu 16.04和14.04 LTS中安装PostgreSQL 9.5