当前位置: 首页>>技术教程>>正文


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

,

问题描述

我昨天安装了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。我该如何解决这个问题?

最佳方法

您可以尝试安装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

次佳方法

安装gcc多个库。

sudo apt-get install gcc-multilib

第三种方法

我见过的最好的答案是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

第四种方法

我终于明白了!这是我的方式,希望它能对您有所帮助:)

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 cleanmake。祝你好运的朋友。

PS:我的环境是:Ubuntu 14.04 64位(Trusty Tahr)和GCC版本4.8.4。我已经在博客中写了解决方案,但是它是中文:-)-How to compass 32bit programm under ubuntu14.04

第五种方法

这些替代库为我工作:

sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++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

第七种方法

对我来说,我必须跑步

sudo dpkg --add-architecture i386

在运行Mike Tang的答案之前。否则,我将无法安装ia32-libs。

第八种方法

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

这比安装不打算分发的软件包要安全得多。

我从Google Earth installation instructions for Ubuntu 14.04得到了这个建议。 Google Earth曾经在64位Ubuntu 12.04下使用ia32-libs

引用webupd8.org

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.

某些程序(例如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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9532.html,未经允许,请勿转载。