version GLIBCXX_3.4.21‘ not found version Qt_5.12’ not found

报错:./smodelserver: /lib64/libstdc++.so.6: version GLIBCXX_3.4.21’ not found ./smodelserver: /lib64/libQt5Core.so.5: version Qt_5.12’ not found

错误信息:
在这里插入图片描述
问题出现的情况:
将我们的程序smodelserver从ubuntu系统上打包放到麒麟3.3上,运行就报错这个
原因:
是因为我们的ubuntu和麒麟3.3的系统库版本不一致,在ubuntn中编译依赖的系统库版本太高,还依赖了qt5.12的库,打包放到麒麟3.3上就没有这样的环境了
解决方法:
1、可以先尝试使用脚本启动打包的程序(此方法我们的程序行不通),在脚本里设置export我们需要依赖的高版本的库和qt5.12的库如下图
在这里插入图片描述
其中smodelserver是打包的程序文件夹,lib是自己创建的文件夹,在lib里面放入依赖的高版本的系统库如下图
在这里插入图片描述
自己创建好软连接即可。
QT_LIB后面的路径是我安装的qt5.12路径,也可以自己直接把之前安装的qt直接打包放到麒麟3.3的环境下,这里路径也对应改一下即可。
然后执行脚本,理论上是可以有用的,但是我这边出现段错误,这里就没有继续探究为什么出现段错误了,若你们也这样没有解决问题,请看第二种方式。
2、这里我们需要重新编译动态库,因此安装了qt5.12去编译生成动态库,但是因为麒麟3.3中自带qt4.8版本,可能是冲突了,在编译的时候qt自己的库报错重复声明了,如下图
在这里插入图片描述
最终解决方法是,更改了qt5.12的gcc和g++编译,由于我在ubuntu中用qt5.12编译的,查看我之前ubuntu中的gcc版本如下
在这里插入图片描述
而麒麟3.3的gcc是4.5的版本太低了,因此找了麒麟官方的人提供了gcc5.4的版本在麒麟3.3中进行安装,最后在qt5.12中进行如下设置
在这里插入图片描述
点击添加GCC里面添加c和c++然后找到你之前安装的路径即可,如下图再修改一下套件
在这里插入图片描述然后重新编译即可,我们的动态库就在麒麟3.3中编译完成了。
最后再重新编译我们的smodelserver程序,编译过程还是有报错,是报错没有找到qt5.12,如下图
在这里插入图片描述类似这样的libqtcore啊等等一堆qt的库报错,这里没有找到截图
还是用export去解决如下图
在这里插入图片描述
这里就可以顺利编译出我们的程序smodelserver了,最后部署的时候如果需要到新的麒麟3.3上部署就把这个程序打包还要你的qt5.12一并打包按原来的位置存放即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值