0. 背景
deepin15自带的qt是qt5.7,版本有点太老了,所以准备升级一下,升级到5.15,过程中遇到很多坑,这里记录一下做个备忘
1. 下载Qt安装包
这里直接去官网下载开源版即可: Qt官网链接 这里下载只是一个安装程序,可以安装5.9到6.x所有版本的Qt,运行之后根据提示一步步安装即可:
- 首先需要注册一个帐号,然后一路默认选项进入到第2步:
- 根据需要选择要安装的版本和对应的包,这里我只需要开发桌面程序,因此只选择了安装源码和desktop:
- 选择好Qt版本后,最下面有qt creator的选项,根据需要勾选,这里我不需要3D相关的开发,因此只勾选了前两个,需要注意的是deepin15自带的cmake版本比较老,并且没有Ninja,所以记得勾选上下面的cmake和ninja:
- 等待安装结束即可
2. 配置环境变量
安装完成后发现,直接点击快捷方式启动Qt Creator没有反应,这时候就需要调试一下、设置一些环境变量 1.首先打开shell窗口,输入:
export QT_DEBUG_PLUGINS=1
这样我们运行qtcreator就会有详细的日志输出了; 2.然后进入到Qt的安装目录(安装的时候有设置),安装目录下面会有一个Tools目录,Tools目录里装有我们安装的cmake、ninja以及qtcreator: 3.进入到QrCreator的bin目录,执行一下qtcreator:
./qtcreator
然后会出现报错信息,我的报错如下: 发现错误是检查红圈所示的目录时候发生的,这个目录其实就是qtcreator所在的bin目录,我发现这个目录地下没有platforms这个目录,然后我百度了下面关于 xcb 找不到的报错,发现是找不到libqxcb.so这个文件导致的,于是全局搜了一下:
sudo find / -name libqxcb.so
发现在/usr目录和我的qt5的安装目录下都有这个文件,/usr目录下那个应该是系统自带的,不要用这个,我们选用qt5安装目录下的: 我发现这个so文件就是在platforms目录下面,因此我猜测这个应该就是bin目录下缺少的那个目录,查阅资料发现,需要添加一个环境变量指定qt搜索platforms的路径:
export QT_QPA_PLATFORM_PLUGIN_PATH="/path/to/qt/install"
将环境变量设置为刚才find找到的platforms目录,然后再运行一下qtcreator,发现有新的报错: 我们直接复制过来的platforms底下的libqxcd.so加载失败了,是由于这个so文件依赖libQt5XcbQpa.so.5文件里少了一个符号。 可以看到,这个依赖文件应该是qt5的一个库文件,但是从报错可以看到我们加载的是/lib目录底下的qt5的库,所以可以猜到应该是系统自带的qt5的库跟我们下载的版本不一致导致的,我们全局搜一下libQt5XcbQpa.so.5这个文件: 可以看到,我们的qt5安装目录下面有两个目录里有这个文件,这里我们选择qtcreator所在的目录,把这个目录添加到环境变量里:
export LD_LIBRARY_PATH=/path/to/lib
路径改成自己的即可。 可以直接把上面讲到的两个export语句添加到~/.bashrc文件里(直接放文件最后一行),这样就不用每次都手动添加这个环境变量了: 改好之后,source ~/.bashrc 运行一下即可生效。 关于Qt5的环境变量,可以参考一下这个博文 Qt5.x移植后的环境配置 添加完环境变量,我们再来运行qtcreator,成功运行! 如果还报错,说是libxcb-util.so.1找不到,这个据说是qt的bug(我是没有遇到),可以参考一下这个博客,把创建一个libxcb-util.so.1软连接指向系统自带的libxcb-util.so.0即可: QtCreator提示libxcb-util.so.1找不到怎么办
3. 升级系统的cmake版本
deepin15自带的cmake版本太低,这里我们替换成我们刚才下载的cmake3.21
- 首先卸载掉系统自带的cmake:
sudo apt autoremove cmake
- 然后进入到Qt安装目录的Tools/CMake/bin目录,把里面的程序复制一份到/usr/bin目录即可
- 检查一下是否成功:
Ok,万事大吉,Have fun!
|