deepin(深度)系统下qt5.12.0的程序打包发布到linux云服务器上

        做项目时要求,要求做一个用于QT客户端更新提供更新的服务器,服务器弄好啦,要测试一下,在发布时,发现了一些问题,在此记录一下。

这个打包和我的前一篇博客步骤一样,打包可参考https://blog.csdn.net/qq_44667165/article/details/127609929

打包好后,我把服务程序上传到我的阿里云服务器上,我的云服务器是ubantu20.04的命令行界面,内存只有2G,没有图形界面,比较轻便,没有图形界面,系统资源的消耗小,所以一般服务器不搞图形界面,方便远程命令操控

然后我在云服务器上运行时,提示

 Could not load the Qt platform plugin "xcb" in "" even though it was found

这是什么意思呢?

我查了一下,xcb在Qt里是图形界面必须要加载的模块,这里卡了我,一时没有头绪,因为我的服务器是没有加载图形界面的,怎么会这样呢?

后面想了想,既然需要图形模块来加载的话,应该但是我的服务器没有图形界面,加载不了可执行程序里面要依赖的图形库,也就是GUI界面。

我去打包的lib目录看了一下

看到33个库文件,有几个我熟悉的GUI库文件,XCB,Widget,其他的不怎么认识,肯定还有,因为加载图形界面是比较耗资源的,需要很多库的协同加载

为什么有那么多图形库呢,想到这里,我就去我的源代码那里看了下,去Qt的.pro文件看了看,虽然我有QT -= gui的配置,但是认真看了下,还有这个 QT += widgets,这个就是图形模块了,注释了之后,程序也报错了

 QApppliCation是需要GUI支持的,关系如下

        QApplication继承了QGuiApplication类,而QGuiApplication继承了QCoreApplication类,而QCoreApplication又继承QObject的

        QCoreApplication定义在core模块中,为应用程序提供了一个非gui的事件循环,QGuiApplication定义在gui模块中,提供了额外的gui相关的设置,比如桌面设置,风格,字体,调色板,剪切板,光标;QApplication定义在widgets模块中,是QWidget相关的,能设置双击间隔,按键间隔,拖拽距离和时间,滚轮滚动行数等,能获取桌面,激活的窗口,模式控件,弹跳控件等

到此原因就很明朗了,把有关GUI的模块全部去掉即可,使用纯命令行模式的QCoreApplication即可,

 

 这样子,然后重新编译,把之前打包好的文件全部删掉,重新打包一遍

然后再次进入到打包好的lib目录下:

此时只有14个库文件了,之前有GUI的有33个库文件,少了一倍多,当然程序打包时,大小也少了查不多一倍。所以服务器为什么不搞GUI的原因之一,耗资源

重新上传服务器,配置好,就没有问题了,运行,没有报错了,搞定!!!

        服务器一般只搞命令行界面的,里面除了程序外,日志模块必不可少,各种类型的日志文件是排查程序问题的重要途径。服务器一般部署在一个独立的主机上,可以随时ssh等方式远程控制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值