64位系统兼容32位系统,正常通过apt指令安装兼容包即可。也就是两条命令的事情:

apt-get install gcc-multilib

apt-get install g++-multilib

安装完后,32位的程序就可以在硬件上跑了。但是现场已经在使用的硬件产品,因为硬件网络是定向网络(IOT定向卡,限定了访问的IP地址,目前无法访问163和交大的源),所以这些设备上无法执行apt指令。

当然,可以在公司将需要的deb下载下来,然后升级的时候,目标设备下载下来后,dpkg -i来安装这些包。但是,这两个包,依赖的包非常多,搞起来也不是那么容易的。

剩下还有一种办法,就是取一个设备做测试验证,在这个机器上先安装好环境,然后将安装好的包,直接压缩,然后以升级的方式拷贝到目标机器上,不就可以了吗?

按照这个思路,以x86的硬件为例,安装了兼容包后,机器上会多出来:

1. /lib/i386-linux-gnu

整体打包后,到目标机器上, /lib文件夹下解压缩即可

2. /usr/lib32

整体打包,到目标机器上,/usr目录下,解压缩

3. /lib32

这个是指向/usr/lib32的链接文件夹,所以在/下建立用ln -s建立链接文件夹即可

4. 调试指令ldd

ldd经常用到,如果只做上面1~3步操作,ldd 检查32位程序,还是不行。需要到/lib目录下,建立快捷文件ld-linux.so.2,如下所示: 

5. 库的加载路径

库的加载路径,由/etc/ld.so.conf.d下的文件夹决定。安装完兼容包的硬件中,会多出i386-linux-gnu.conf,zz_i386-biarch-compat.conf和zz_x32-biarch-compat.conf,这3个文件。把这3个文件拷贝到目标机。如果要不重启验证,那么执行ldconfig。如果重启,那自动就好用了。

做完上述5个步骤后,我的目标机器,就能跑32位的程序了

Logo

更多推荐