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 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值