32位程序在64跑时,兼容上存在一定问题,因此,通常要求施工环境按照的操作系统版本、位数和实验环境保持一致,比如我们是在32的centos5.8下开发的软件,尽量要求在施工时,也安装32位的centos5.8,以免在安装时遇到各类问题,以及潜在的问题,这点通常我们都遵守了,但总有特殊原因,用户提供64位的机器,让我们安装
,会造成安装的一些困难,延迟安装日期1-2天
以应用程序使用的mysql库的问题示例(仅供参考)
环境
应用程序:ipcall
实验环境:
centos 5.4 32位
mysql 5.0.41 32位
施工环境:
centos 5.7 64位
mysql 5.0.17 64位
安装出现的问题
./ipcall: error while loading shared libraries:
libmysqlclient.so.15: wrong ELF class: ELFCLASS64
判断问题(施工机器)
a.查看操作系统的位,uname -a 显示64位
b.查看ipcall的位,执行 file ipcall,显示 ipcall: ELF 32-bit LSB
executable,说明是32位
c.查看ipcall使用库,执行:ldd ipcall,显示 libmysqlclient.so.15 => not
found,说明没找到依赖的mysql库
d.查看已经装的mysql库,ldconfig -p| grep mysql,显示libmysqlclient.so.15
(libc6,x86-64) =>
/usr/lib/libmysqlclient.so.15,说明已经安装的是64的mysql库
e.根据b,c,d知道,缺少的是ipcall依赖的32位库
f.从实验环境copy 32的库到施工的机器的位置
g.
vi /etc/ld.so.conf
添加32位mysql库的位置目录
执行:ldconfig -v 生效
总结
遇到类似的有关依赖库的位不兼容问题,参考以上方法解决
结束