如何在ubuntu14.04编译运行32位程序

如何在ubuntu14.04编译运行32位程序,第1张

我的解闷茄告决方法

安装系统:

Install ubuntu14.04-64bit(Trusty Tahr)

安装蚂明32位库:

sudo apt-get install libc6:i386

用之前的源安装ia32-libs:

sudo -i

cd /etc/apt/sources.list.d

echo "deb 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

安装gcc编纳丛译时需要的一些类库:

sudo apt-get install gcc-multilib

在gcc的时候加-m32参数 再次尝试:

make clean

make

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 环境,要么是用交叉编译。不过注意这两种方式还是需要设置。

make 命令会去解析 Makefile 文件或者 -f 后面的带的 mk文件,这个mk文件里面会有gcc/g++ 这些编译命令(这个才锋灶是真正起到编译作用的)。所以要检查gcc/g++所带的参数。

ld(链接器)报告 -lgd-linux 找不到,可能需要检查

路径历基察是否有带进去,-L“路径”

-lgd-linux 是指 加载名字为 libgd-linux.so 的动态库

检查肢茄是否有 LD_LIBRARY_PATH <-- load library path . export LD_LIBRARY_PATH=库文件路径:$(LD_LIBRARY_PATH)

另外发现 上述 1 和 3 点需要同时具备。原因目前不清楚。


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

原文地址: http://outofmemory.cn/yw/12365622.html

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

发表评论

登录后才能评论

评论列表(0条)

保存