如何在64位的linux中运行32位的应用程序

如何在64位的linux中运行32位的应用程序,第1张

 大部分Linux发行套件都有针对x86_64处理器的版本。比较典型的x86_64的处理器有ADM Athlon II和英特尔Xeon。因为这些Linux发行套件都有自己专用的软件源,这些软件源会为提供所有它所支持的应用软件的二进制包。如果你满足于Linux的安装方式,你可能不会需要运行32位的程序。

一些Linux商业软件,尤其是游戏,只提供32的版本。因为某些特殊的理由,你可能需要配置你的电脑来运行32位的软件。

安装32位的支持库

因为x86_64处理器是为x86技术涉及,所以它也是支持32位程序的。在Linux里,你所需要做的就是为这些软件安装必要的软件库。幸运的是,大部分Linux发行版本已经将这些打包好了。比方在Ubuntu里,这个包就叫做ia32-libs。为了安装它,你可以打开一个终端,然后输入下面的内容:

sudo apt-get install ia32-libs

在Kubuntu中,你也可以通过Synaptic和Kpackagekit在图形界面下安装。一旦安装了之后,像游戏之类的软件就不再需要更多的配置。

图形问题

当你在一个64位的环境中运行32位的软件时,Ubuntu仍然会去寻找默认的GTK引擎。这样导致一个wrong ELF class的报错。这种情况在你运行某些特定的软件的时候特别恼人,比方说Chrome,一款新的谷歌浏览器开源版本。Ubuntu确实已经将32位版本的GTK引擎安装在了 /usr/lib32/gtk-2.0,但是我所使用的GTK项目并没有在这个位置找到。快速的解决方法如下:

1、为你现在用的主题找到32位包。比方说我,我查找了ubuntu packages

2、下载包,然后将包解压缩

3、为主题找到库文件

4、将库拷贝到lib32路径:

sudo cp ~/download-directory/usr/lib/gtk-2.0/2.10.0/engines/libqtcurve.so /usr/lib32/gtk-2.0/2.10.0/engines/

比方说Chrome,它的需要可以设置在启动脚本里: /user/lib32/gtk-2.0如果程序的启动脚本在你运行的时候没有去看,而是去寻找 /user.lib/gtk-2.0,你可能需要修改启动脚本或者在终端里输出并设置一个环境变量:

export GTK_PATH=/usr/lib32/gtk-2.0 command-to-start-app

如果一个程序没有启动脚本,你可以像上面那样设置下环境变量。

工具:Ubuntu

步骤:

下面的命令可以在 Ubuntu/Debian 13.10 或更高的发行版上运行。

第一步: 确认你有一个64位架构的内核

可以打开终端然后输入:dpkg --print-architecture

将会看到像下面这样的内容:

amd64

这说明着已经拥有了64位架构内核。

第二步: 确认打开了多架构支持功能

(多架构支持可以在有64位库的情况下使用32位库。)

输入:dpkg --print-foreign-architectures

输出是:i386

如果还没有多架构支持需要打开它。

另一种第二步: 打开多架构支持。

输入:

sudo dpkg --add-architecture i386

sudo apt -get update

然后就会开始下载更新然后运行。

之后需要输入:sudo apt-get dist-upgrade

它会检查已经拥有的库文件是否有更新的版本。

若果然有的话,它会问是否需要更新(y/n)。

如此这般,就已经成功地为你的64位系统安装了32位支持了。

但是,有时候我们会为网速慢,安装源不好而烦恼,所以我们可能会将一些常用软件包

deb文件保存在本地以备不时之需。当然了使用dpkg也可以直接来安装保存在本地的deb软件包,问题是它并不能处理软件包之间的依赖

第一步:所你所有的deb文件放在同一个目录内,如:

# mkdir /var/debs

第二步:使用dpkg-scanpackages 命令生成APT可以使用的软件包索引文件

/var# dpkg-scanpackages debs /dev/null | gzip debs/Packages.gz

注:/dev/null位置的参数是指定一个文件,文件名不限,该文件的作用是用来重写覆盖deb软件包中控制文件的某些定义,它的第一行的格式,一行对应一个软件包:

package priority section

package指定你所要修改的软件包

priority 有low,medium,high三个值

section 用来指定软件包属于哪个section

如果不需要对deb软件包做任何修改你就可以像例子中那样直接指定一个/dev/null文件。

第三步:在你的sources.list中添加一行

deb file:/var debs/

这样你就可以使用apt-get命令来安装这些软件包了,命令格式没有任何差异,apt-get会为我们处理软件包之间的依赖关系,不过要注意,在修改sources.list之后一定要执行一下apt-get update命令。

让 apt-get使用本地的源代码进行安装也是一样的,不过需要注意下列几点:

1、第一个软件包的orig.tar.gz(源程序文件), .dsc(debian控制文件) and .diff.gz(描述在debian能使用该程序之前需要进行的修改部分)文件必须在同一目录下。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11548055.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存