安装系统:
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 点需要同时具备。原因目前不清楚。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)