Ubuntu 64位安装32位运行库

 学嵌入式时安装了 Ubuntu 16.04 x64 ,安装交叉编译工具链的时候出了问题:

$ ./arm-none-linux-gnueabi-gcc -v
-bash: ./arm-none-linux-gnueabi-gcc: No such file or directory

因为以前装的时候也遇到过这种问题,其实就是这个工具链是32位程序,而Ubuntu 16.04 已经默认不安装32位运行库了,所以需要重新安装32位运行库 ia32-libs。常规安装命令:

$ sudo apt-get install ia32-libs

大致会遇到这样的错误:

Some packages could not be installed. This may mean that you have 
requested an impossible situation or if you are using the unstable 
distribution that some required packages have not yet been created 
or been moved out of Incoming.The following information may help 
to resolve the situation:

The following packages have unmet dependencies:
 ia32-libs : Depends: ia32-libs-multiarch
E: Unable to correct problems, you have held broken packages.

这里要注意,不同的Linux版本的解决方案实际上是不同的,建议大家在搜索的时候附加上自己的Linux版本。

着急的同学可以直接看参考博客3、4、5(这里直接贴出对应的命令)建议尝试顺序参考5,参考4,参考3。

参考5:

$ apt-get install lib32ncurses5 ​
$ apt-get install lib32z1

参考4:

$ sudo apt-get install g++-multilib
$ sudo apt-get install libncurses5:i386
$ sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386

参考3:这种方法比较慢,添加了i386架构

// 判断自己的架构(我的输出amd64)
$ dpkg --print-architecture
// 添加i386架构
$ dpkg --add-architecture i386
// update 一下
$ sudo apt-get update
// 安装i386
$ apt-get install iceweasel:i386

想了解原因的童鞋可以接着往下看:

解决方案参考及自己测试:

参考1:http://blog.sina.com.cn/s/blog_96a11ddf0101skaa.html

结果:autoclean 和 autoremove 运行成功,update成功,结果还是和上述错误一样。

上述参考博客里有以下一段(做了谷歌翻译):

“由于ia32-libs现在是一个过渡包装程序包,它包含以前在ia32-libs中捆绑的一组支持multiarch的库,所有这些库包都必须是可安装的。 在Ubuntu的发布版本中(例如在精确和精确更新的口袋中),包将始终可单独安装; 但是,multiarch对可安装性施加了额外的限制:库包必须与要安装它的所有体系结构完全相同。”

参考2:https://blog.csdn.net/hj74535099/article/details/50220207

还是无法安装成功。

参考3:https://www.91linux.org/89.html

这里讲到了解决方案:“Multiarch(多架构)术语被用于指一个系统能安装和运行有多个不同二进制文件的应用程序,例如i386-linux-gnu程序能运行在 amd64-linux-gnu系统上。Multiarch还简化了跨架构编译。Debian在年度会议DebConf11上作出了引入 Multiarch支持的决定。开发者表示,它大大增强了Debian实现通用操作系统承诺的能力,加强了新的64位系统对32位应用程序的支持。”

参考4:https://blog.csdn.net/hackerwin7/article/details/37878007

这个博客直接给出了解决方案,即安装 multilib 和 i386 感觉是可行的,因为我试到参考3的时候就可以运行32位程序了。

参考5:https://blog.csdn.net/bfboys/article/details/53013662

未亲测,但是我以前好像就是永的这种方法解决的。

猜你喜欢

转载自blog.csdn.net/m0_37763336/article/details/83618390
今日推荐