libgcc_s.so.1 mysql_动态链接库报错:error while loading shared libraries: libgcc_s.so.1:&nb...
tort的一个错误搞了一天,总结一下,希望对大家有用,因为这类错误相当普遍。报错如下:error while loading shared libraries: libgcc_s.so.1: wrong ELFclass: ELFCLASS64运行程序出问题:1.确认当前运行的程序是32位还是64位[root@localhost tort]# file torttort: ELF 32-bit L
tort的一个错误搞了一天,总结一下,希望对大家有用,因为这类错误相当普遍。
报错如下:
error while loading shared libraries: libgcc_s.so.1: wrong ELF
class: ELFCLASS64
运行程序出问题:
1.确认当前运行的程序是32位还是64位
[root@localhost tort]# file tort
tort: ELF 32-bit LSB executable, Intel 80386, version 1
(SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs),
for GNU/Linux 2.6.9, not stripped
2.确认当前程序是否正常调用的动态链接库
[root@localhost tort]# ldd /home/lfxu/xkba/tort
linux-gate.so.1 =>
(0xffffe000)
libcrypt.so.1 =>
/lib/libcrypt.so.1 (0x006d7000)
libdl.so.2 =>
/lib/libdl.so.2 (0xf7f65000)
libpthread.so.0 =>
/lib/libpthread.so.0 (0xf7f4e000)
libnsl.so.1 =>
/lib/libnsl.so.1 (0x0080b000)
libresolv.so.2 =>
/lib/libresolv.so.2 (0x0070b000)
libutil.so.1 =>
/lib/libutil.so.1 (0xf7f4a000)
libcap.so.1 =>
/lib/libcap.so.1 (0xf7f45000)
libmysqlclient_r.so.15
=> not found
libz.so.1 =>
/usr/lib/libz.so.1 (0x00bf4000)
libstdc++.so.6 =>
/usr/lib/libstdc++.so.6 (0xf7e5a000)
libm.so.6 =>
/lib/libm.so.6 (0xf7e33000)
libgcc_s.so.1 =>
/lib/libgcc_s.so.1 (0x00a0f000)
libc.so.6 =>
/lib/libc.so.6 (0x00592000)
/lib/ld-linux.so.2
(0x00574000)
3.查看当前现有可用的动态链接库(这一步没有必要)
[root@localhost tort]# ldconfig -p| grep mysql
libmysqlclient_r.so.15
(libc6,x86-64) => /usr/lib/libmysqlclient_r.so.15
libmysqlclient.so.16
(libc6,x86-64) => /usr/lib64/libmysqlclient.so.16
发现当前调用的动态链接库是64 bit,这是导致问题发生的根本原因
4、解决办法:
1、找出libmysqlclient_r.so.15所在的路径
locate libmysqlclient_r.so.15
2、将该库的路径写到ld.so.conf文件中,假设libmysqlclient_r.so.15所在路径为:/usr/lib
vi /etc/ld.so.conf
添加以下路径:
/usr/lib
保存后退出,为了使修改后的ld.so.conf立刻生效,需要执行以下命令:
ldconfig
###如果上以上方法不能解决,说明libmysqlclient_r.so.15的版本不对,比如linux系统是64bit的,而可执行程序是32bit的,这时就需要安装32bit对应的库。
我在centos6.5 64bit系统上运行32bit的 tort可执行程序,不断的提醒如下错误:
error while loading shared libraries: libgcc_s.so.1: wrong ELF
class: ELFCLASS64
按照网上的各种方法修改动态共享库的环境变量,整来一天都没成功。后来在网上搜了一下libgcc_s.so.1
32bit,发现这库是在libgcc里头的,于是我安装了一个32bit
的libgcc,命令如下:
yum install libgcc.i686
运行tort程序后,成功了。
5、总结:
遇到这类报错可能有两个原因:
1、动态共享库的环境变量不对,这时候需要修改ld.so.conf文件,方法如上;
2、动态共享库的路径没有问题,但是版本不对,这时候需要安装合适的版本。
更多推荐
所有评论(0)