ubuntu 64位编译32位 linux编译内核

这篇文章给大家聊聊关于ubuntu 64位编译32位,以及linux编译内核对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

linux64位机器编译32位程序出现错误。

32和 64是完全两个不同的系统。Linux他们的兼容,完全是基于内核的双模式切换功能,但是因为是基于内核的。所以 32和 64的系统函数库就还是没关系。

那么,你编译和运行 32位程序,就需要 64位的函数库接口支撑。同样 64位程序,也需要 64位的函数库提供支撑。

你这个问题,教程只让你装了最基本的编译器环境,但是函数支撑环境全都没有装,肯定是还会提示找不到需要的函数库的。

另外,就算你这个命令装了需要的函数库,也肯定只是装了 64位的函数库,32位库也没有装。那么编译 32位程序也会出现找不到 32位函数库的问题的。

你这个问题,我建议你学习两部分:

1、Linux的依赖关系;

2、Linux的 mutilib相关实现。

我建议,编译 32的程序请用纯 32位系统。64位系统只编译 64位的程序。64位系统只可以运行 32位程序,不要用来编译。Linux里面随便找个程序,就会依赖很多的函数库,这对于编译器调用来说,会很乱的。

如果真的没有空闲机器去单独跑 32位系统了,我建议要么是 chroot环境,要么是用交叉编译。不过注意这两种方式还是需要设置。

ubuntu64位怎么编译32位qt库

64位可以编32位的程序出来,在各种FLAGS中增加-m32编出来的就是32位程序,连接时自然是找32位的共享库

这个要看发行版对32位支持的实现,比如gentoo下如果开abi支持双架构那很可能悲剧,因为有些包还没跟上,如果用binary的32位库又会因为版本不同出现莫名其妙的问题,比如fontconfig的坑。

我在64位编32位程序都是使用chroot的方法,这样就可以把32位的头文件库什么的全放在某个地方。我用的是ubuntu,32位库和64位库位置不一样,一般可以直接安装32位的库,如果遇到某些比较特殊的库,一般都可以通过重新编译增加rpath解决,如果没源码也可以用patchelf直接给elf上rpath。

如果您认可我的答案,请采纳。

您的采纳,是我答题的动力,O(∩_∩)O谢谢!!

如何在64位Linux上编译安装32位wine

以Ubuntu为例说明

一、安装安装lxc

1、安装lxc

sudo apt-get install lxc lxc-templates

2、现在创建一个32位的容器,并把目录绑定到容器:

sudo lxc-create-t ubuntu-n my32bitbox----bindhome$LOGNAME-a i386

3、然后启动容器;在控制台输入用户名和密码。

sudo lxc-start-n my32bitbox

4、在/etc/apt/sources.list中添加内容

sudo sh-c"sed s/deb/deb-src//etc/apt/sources.list>>/etc/apt/sources.list"

5、安装先决条件

sudo apt-get install software-properties-common

sudo add-apt-repository ppa:ubuntu-wine/ppa

sudo apt-get update

sudo apt-get build-dep wine#如果失败使用 sh install-wine-deps.sh cd$HOME mkdir wine32 cd wine32~/wine-git/configure make-j4

6、关闭容器

sudo shutdown-h now

二、安装chroot Method

1、安装

sudo apt-get install schroot debootstrap

2、创建配置文件

sudo editor/etc/schroot/chroot.d/precise_i386.conf

3、添加内容

[precise_i386] description=Ubuntu Precise personality=linux32 directory=/srv/chroot/precise_i386 root-users=your_username type=directory users=your_username

4、创建的Ubuntu的chroot环境

sudo mkdir-p/srv/chroot/precise_i386

sudo debootstrap--variant=buildd--arch=i386 precise/srv/chroot/precise_i386

5、使在chroot内apt-get的工作:

sudo cp/etc/apt/sources.list/srv/chroot/precise_i386/etc/apt/

6、进入chroot:

schroot-c precise_i386-u root

7、得到基础包

apt-get update apt-get install ubuntu-minimal

sudo apt-get install software-properties-common

8、安装构建依赖关系:

apt-get build-dep wine

如果报错:E: You must put some'source' URIs in your sources.list

则执行

add-apt-repository ppa:ubuntu-wine/ppa apt-get update

9、下载Wine源

apt-get install git git clone git://source.winehq.org/git/wine

10、编译

cd wine

./configure make

11、运行

export DISPLAY=:0

./wine notepad

12、在chroot外部执行

exit

sudo apt-get install wine

exit

cd wine

./wine notepad

三、手动连接库的方法

1、执行下面代码

sudo apt-add-repository ppa:ehoover/compholio

sudo apt-get update

sudo apt-get install ia32-libs-dev

2、或者设置符号连接

cd/usr/lib/i386-linux-gnu

sudo ln-s libfreetype.so.6 libfreetype.so

sudo ln-s libX11.so.6 libX11.so

sudo ln-s libXau.so.6 libXau.so

sudo ln-s libXcursor.so.1 libXcursor.so

sudo ln-s libXi.so.6 libXi.so

sudo ln-s libXext.so.6 libXext.so

sudo ln-s libXxf86vm.so.1 libXxf86vm.so

sudo ln-s libXrandr.so.2 libXrandr.so

sudo ln-s libXrender.so.1 libXrender.so

sudo ln-s libXinerama.so.1 libXinerama.so

sudo ln-s libXcomposite.so.1 libXcomposite.so

sudo ln-s libGLU.so.1 libGLU.so

sudo ln-s libOSMesa.so.6 libOSMesa.so

sudo ln-s libgnutls.so.26 libgnutls.so

sudo ln-s libsane.so.1 libsane.so

sudo ln-s libv4l1.so.0 libv4l1.so

sudo ln-s libv4l2.so.0 libv4l2.so

sudo ln-s liblcms.so.[0-9] liblcms.so

sudo ln-s libcapi20.so.3 libcapi20.so

sudo ln-s libcups.so.2 libcups.so

sudo ln-s libfontconfig.so.1 libfontconfig.so

sudo ln-s libgsm.so.1 libgsm.so

sudo ln-s libtiff.so.[0-9] libtiff.so

sudo ln-s libmpg123.so.0 libmpg123.so

sudo ln-s libodbc.so.1 libodbc.so

sudo ln-s libopenal.so.1 libopenal.so

sudo ln-s libldap-2.4.so.2 libldap.so

sudo ln-s libldap_r-2.4.so.2 libldap_r.so

sudo ln-s liblber-2.4.so.2 liblber.so

sudo ln-s libxml2.so.2 libxml2.so

sudo ln-s libxslt.so.1 libxslt.so

sudo ln-s libssl.so.0.9.8 libssl.so

sudo ln-s libcrypto.so.0.9.8 libcrypto.so

sudo ln-s libjpeg.so.8 libjpeg.so

sudo ln-s mesa/libGL.so libGL.so

cd/usr/lib/i386-linux-gnu/mesa

sudo ln-s libGL.so.1 libGL.so

cd/lib/i386-linux-gnu

sudo ln-s libdbus-1.so.3 libdbus-1.so

sudo ln-s libpng12.so.0 libpng12.so

sudo ln-s libncurses.so.5 libncurses.so

3、可能还需要的32位libraries

sudo apt-get install libosmesa6:i386 libosmesa-dev libjpeg-turbo8-dev:i386

阅读剩余
THE END