处理动态链接库报错的问题

今天,在起EMC程序一直启不起程序,而是总部的研发人员要求这边的维护人员把这个程序杀掉,灾难由此而生。
启动程序的命令为:
nohup ./emcAnalyse &
可以一直启不起来,启动起后,就报错:
./emcAnalyse: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
显然,是动态链接库找不到。
于是以root用户,在根目录下查找:
find / -name *libstdc++* -print
找到的结果是在/usr/lib库(其实是/usr/lib64目录下也有)下找到了文件
[root@mdw lib]# ls -l *libstdc*
lrwxrwxrwx 1 root root 18 07-15 12:30 libstdc++.so.6 -> libstdc++.so.6.0.8
-rwxr-xr-x 1 root root 936908 2010-03-31 libstdc++.so.6.0.8
看起来,是因为libstdc++有了升级,导致5升到了6,尝试用ln -s libstdc++.so.5 libstdc++.so.6.0.8
程序报错变成
./emcAnalyse: error while loading shared libraries: libstdc++.so.5: wrong ELF class: ELFCLASS32
已经很确定是链接文件升级导致的,在网上查了下,也找下了类似的问题:
“今天在安装sjsas-9_1_01-mysql-linux.bin时提示这个共享库找不到,错误信息为:error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory在/usr/lib下面发现有 /usr/lib/libstdc++.so.6.0.3于是运行 ln -s /usr/lib/libstdc++.so.6.0.3 /usr/lib/libstdc++.so.5 创建一个符合连接,这个错误信息没有了。但是又出现错误信息:undefined symbol: _ZNSt24__default_alloc_templateILb1ELi0EE12_S_free_listE看来不行。还是删除了连接: rm /usr/lib/libstdc++.so.5然后下载:http://mirror.centos.org/centos/4/os/i386/CentOS/RPMS/compat-libstdc++-33-3.2.3-47.3.i386.rpm再安装rpm -ivh compat-libstdc++-33-3.2.3-47.3.i386"
这位老兄遇到的问题基本与我的一致,照着它的方法把64位的这个包下载下来,然后安装好,最后命令确认包是否安装好:
root@mdw tools]# rpm -ivh compat-libstdc++-33-3.2.3-47.3.x86_64.rpm
warning: compat-libstdc++-33-3.2.3-47.3.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 443e1821
Preparing... ########################################### [100%]
1:compat-libstdc++-33 ########################################### [100%]
[root@mdw tools]# rpm -qa | grep libstdc
libstdc++-4.1.2-48.el5
libstdc++-devel-4.1.2-48.el5
libstdc++-4.1.2-48.el5
compat-libstdc++-33-3.2.3-47.3
再用命令找到安装目录:
Usage: find [-H] [-L] [-P] [path...] [expression]
[root@mdw lib]# find / -name "*libstdc++.so*" -print
/home/oracle/ora10/lib32/stubs/libstdc++.so
/usr/lib64/libstdc++.so.5.0.7
/usr/lib64/libstdc++.so.6.0.8
/usr/lib64/libstdc++.so.5
/usr/lib64/libstdc++.so.6
/usr/local/greenplum-db-3.3.6.1/lib/libstdc++.so.6.0.8
/usr/local/greenplum-db-3.3.6.1/lib/libstdc++.so.6
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/32/libstdc++.so
/usr/lib/libstdc++.so.6.0.8
/usr/lib/libstdc++.so.6
显然,这个目录是在/usr/lib64目录下(之前是不是目录没注意呀),查看了下环境变量LD_LIBRARY_PATH,果然是没有/usr/lib64,于是,在后面追加:/usr/lib64,再启动程序,果然不再报错,成功万岁!
[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12350275/viewspace-1042298/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12350275/viewspace-1042298/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值