我昨天安装了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 . 我该如何解决这个问题?
11 回答
如果您在中国,可以将"raring"修改为"precise"(分别为Ubuntu 13.04(Raring Ringtail)和Ubuntu 12.04 LTS (Precise Pangolin)) . 我在Ubuntu 14.04(Trusty Tahr)上安装了Beyond Compare .
问题是,在许多情况下,软件包已经是multiarch,因此i386软件包不可用,但其他软件包仍然只依赖于i386软件包 . 这是存储库中的问题,并且存储库的管理者应该修复它
解决方案是将相应的Debian包方式添加到您的存储库 . 为此,键入以下命令:
第一行在
sources.list
文件的末尾写入包的方式 . 这对我有用 . 我希望这对你有所帮助 .您可以尝试这个来安装32位库(不是所有在ia32-libs中):
sudo dpkg --add-architecture i386
可能是必需的(如果你还没有运行过) .或者,如果您想要安装整个ia32-lib,请尝试以下顺序:
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多个库 .
我见过的最好的答案是How to run 32-bit applications on Ubuntu 64-bit?
我终于明白了!这是我的方式,我希望它可以帮助你:)
我没有时间尝试 . 哦,是的,我需要告诉你 . 这次当你想编译你的代码时,你应该在
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 .
这些替代库对我有用:
我遇到了和上面相同的问题,Eclipse建议安装:
当我尝试安装ia32-libs时,Ubuntu提示安装其他三个软件包:
使用Android Studio和intellij,我还必须安装32位版本的libstdc 6:
对我来说,我必须跑
在运行Mike Tang的回答之前 . 否则,我无法安装ia32-libs .
Simply install the 32-bit version of the program, 而不是64位版本 .
这比安装不适合手头发行的软件包安全得多 .
我从Google Earth installation instructions for Ubuntu 14.04得到了这个建议 . 谷歌地球曾经在64位Ubuntu 12.04下使用
ia32-libs
.引用webupd8.org:
某些程序(如Google Earth)的问题在于32位软件包不支持multiarch . 因此,需要手动安装一些32位依赖项,以使32位版本的程序在Ubuntu 64位上运行 .