centos环境里的libstdc++.so.6: cannot open shared object file: No such file or directory问题

博客介绍了在CentOS7.6搭配鲲鹏CPU的环境中,遇到Java运行时的UnsatisfiedLinkError问题,原因是libstdc++.so.6库的架构不匹配。解决方案是从相同架构的环境中获取libstdc++.so.6文件并替换,或者下载对应版本的库文件放到服务器的/usr/lib64/目录下。提供了解决问题的具体步骤和注意事项,并给出了libstdc++.so.6.0.21的下载链接及参考资料。

环境:centos7.6  鲲鹏CPU 即 ARM64(aarch64)架构

问题表现:公司最近的项目,放到华为云服务器(centos7.6+鲲鹏cpu)环境里时,执行时报错:

-----java.lang.UnsatisfiedLinkError: /home/NTKO/apache-tomcat-8.5.63/native/libdocsign_cdata-0.1.38-linux-aarch64.so: libstdc++.so.6: cannot open shared object file: No such file or directory-----

libstdc++.so.6: cannot open shared object file: No such file or directory

经过多番查找资料问题原因可能是:研发那边测试使用的是虚拟机环境里的ubuntu系统为x86架构,而测试服务器为arm64架构,应该是使用的libstdc++.so.6架构不匹配造成的。

处理方法(经过换源升级安装等方式均不可行,而由于csdn里资源下载所需积分太高,我实在太穷了,所以用的如下办法...):

从与服务器环境架构一致的环境里(如银河麒麟+飞腾cpu环境里)找到这个libstdc++.so.6 查找方法大致如下:

1、通过sudo find / -name "libstdc++*"查找相关内容

2、跳转到对应的/usr/lib/aarch64-linux-gnu/目录下 查看文件libstdc++.so.6与libstdc++.so.6.0.21:

可发现其中libstdc++.so.6文件实际是个软链接,而libstdc++.so.6.0.21才是真正的文件。因此这里找到的libstdc++.so的版本为6.0.21

3、将文件拷贝出来放到测试服务器上 (这边在操作的时候是拷贝了libstdc++.so.6这个软链接文件,发现按拷贝的文件大小与 libstdc++.so.6.0.21文件大小是一样的)直接放到服务器上的/usr/lib64/目录下之后是可以正常使用的,不再报libstdc++.so.6: cannot open shared object file: No such file or directory。

需要注意:如果拷贝的是libstdc++.so.6.0.21放到/usr/lib64下,如果当前目录下已经存在了 libstdc++.so.6这个软链接文件 则要先删除这个文件(跳转到对应目录下):rm libstdc++.so.6 然后再创建新的软连接ln -s libstdc++.so.6.0.21 libstdc++.so.6 

这样之后,如果当前的libstdc++.so.6.0.21 可用,则不再报错。

附该版本libstdc++.so.6.0.21资源下载链接:https://download.youkuaiyun.com/download/yeyuningzi/15435979

该问题其他参考资料:https://www.cnblogs.com/exmyth/p/3796363.html

若还有其他错误,请再按照其他错误进行处理

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值