Ubuntu14.04如何安装32位兼容库,即ia32-libs

andycoder 发布于 2014/04/20 20:26
阅读 80K+
收藏 7

我现在安装了ubuntu 14.04 LTS版本,但是发现它好像不兼容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,那时候只要装一下ia32-libs就ok了.但是,貌似从ubuntu 13.10之后就没有ia32-libs了.于是我就Orz了...求大神指点...

加载中
0
一行
andycoder
andycoder
添加了源之后是可以apt-get install ia32-libs了,但是我的问题还是没有解决=.= 在make的时候还是会报错:/usrbin/ld: i386 architecture of input file './libsc.a' is incompatible with i386:x86-64 output
2
eechen
eechen

64位系统下执行 dpkg -l libc6 你会看到 libc6:amd64
32位libc6对应的就是libc6:i386
apt-cache show libc6:i386

比如64位Ubuntu安装32位的WPS的时候就需要安装32位的libc6
sudo apt-get install libc6:i386

libc6:amd64和libc6:i386的库位置:
/lib/x86_64-linux-gnu/libc.so.6
/lib/i386-linux-gnu/libc.so.6

andycoder
andycoder
谢谢,不过还是不行额... 我按照您说的安装了libc6:i386,而且在/lib/i386-linux-gnu/下也看到了一推.so文件,当然也包括libc.so.6 . 不过我在编译我程序的时候依旧出现了上面的错误...
0
kslr
kslr
同好奇,今天也碰到了
andycoder
andycoder
回复 @kslr : 我搞定了!!!你可以参考我写的博客,希望对你有帮助.http://andycoder.me/fix-32bug-under-ubuntu1404/
andycoder
andycoder
回复 @kslr : 你试试make clean一下 然后重新make, 还是不行的话,那试试在编译的时候加上`-m32`参数
kslr
kslr
回复 @andycoder : =。= 伤心。。。失败了
andycoder
andycoder
你可以试一下 @一行 提供的办法: http://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=5107&highlight=ia32 虽然对我无效,但是说不定对你有帮助~ Good luck
0
agultiga
agultiga
为什么运行sudo apt-get install ia32-libs不行?
andycoder
andycoder
没有这个包...
0
otgo
otgo

上次玩android,配置环境也遇到了这个问题。你换成中科大的源就可以了,我也是这样解决的。

andycoder
andycoder
我现在就是中科大的源呀, http://mirrors.ustc.edu.cn/ubuntu
0
Gemini-Lin
Gemini-Lin

切换成12.04的源把这个32位运行库安装好 再切换回去

channel01
channel01
回复 @Gemini-Lin :
Gemini-Lin
Gemini-Lin
回复 @andycoder : 你去搜索下ubuntu换源就是了
andycoder
andycoder
额..不好意思,我不大会额,能说一下具体命令么? 谢谢了~
0
andycoder
andycoder

引用来自“agultiga”的评论

为什么运行sudo apt-get install ia32-libs不行?

andy@Andy :~/project/gemini$ sudo apt-get install ia32-libs
[sudo] password for andy: 
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


0
jamesarc
jamesarc

sudo apt-get install apt-file -y && apt-file update &&  apt-file search xxx.so 搜索你需要的库文件

0
JerryLin
JerryLin

http://stackoverflow.com/questions/19523502/androids-aapt-not-running-on-64-bit-ubuntu-13-10-no-ia32-libs-how-can-i-fix

andycoder
andycoder
回复 @JerryLin : 恩恩,我现在ia32-libs已经安装了,但是程序还是编译不过。不过加了-m32参数之后就没问题了,但是在运行时又开始出错了,哎。。我还是换回ubuntu12.04(32bit)吧。。T_T
JerryLin
JerryLin
回复 @andycoder : 试试上面讲的apt换源,换回12.04的源,安装后再换回14.04的源。/etc/apt/source.list
andycoder
andycoder
人家make clean 再make一下就好了,真是...太欺负人了...可是我不是啊..T_T
0
andycoder
andycoder


我今天总算把这个问题搞定了,特地来回答自己的问题...希望能对遇到相同问题的人有帮助,我的方法是:

sudo apt-get install libc6:i386
sudo -i
cd /etc/apt/sources.list.d
echo "deb http://archive.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs
rm /ia32-libs-raring.list
apt-get update
exit
sudo apt-get install gcc-multilib

我也不知道这里的packages是不是都要装,反正我是都装了...最后,在用gcc编译的时候需要添加`-m32`参数,例如

gcc -m32 -o hello helloworld.c

再make clean, make一下吧, Good luck friends :)

Ps: 我的环境是 :Ubuntu 14.04-64bit(Trusty Tahr), gcc version 4.8.4 另外,我也写了一篇博文http://andycoder.me/fix-32bug-under-ubuntu1404/


登高远望
登高远望
哭咯哦wwwwww
登高远望
登高远望
哈明明明明
返回顶部
顶部