环境: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
若还有其他错误,请再按照其他错误进行处理
博客介绍了在CentOS7.6搭配鲲鹏CPU的环境中,遇到Java运行时的UnsatisfiedLinkError问题,原因是libstdc++.so.6库的架构不匹配。解决方案是从相同架构的环境中获取libstdc++.so.6文件并替换,或者下载对应版本的库文件放到服务器的/usr/lib64/目录下。提供了解决问题的具体步骤和注意事项,并给出了libstdc++.so.6.0.21的下载链接及参考资料。
1691

被折叠的 条评论
为什么被折叠?



