Kylin下源码编译安装Qt、搭建MySQL环境以及遇到的问题
最近要在银河麒麟上测试项目,在安装Qt和MySQL时遇到并解决了许多问题,特此记录一下。
最近要在银河麒麟上测试项目,在安装Qt和MySQL时遇到并解决了许多问题,特此记录一下。
目录
2.1 插件目录(/plugins/platforms)下没有libqxcb.so
一、环境:
系统:银河麒麟桌面操作系统V10(SP1)
CPU:AMD Ryzen9 7845HX
二、安装QT以及QT Creator
这里参考了大佬的博客:linux下源码编译安装Qt_linux qt-CSDN博客
1. 准备工作
不过QT官网和各个镜像源站屏蔽掉了很多版本,我下载的版本是5.15.2
链接(清华大学镜像源):https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.15/5.15.2/single/
将其复制到/usr/local/目录下
cp qt-everywhere-src-5.15.2.tar.xz /usr/local
进入/usr/local/目录,解压该文件,并进入目录
cd /usr/local
tar -xvf qt-everywhere-src-5.15.2.tar.xz
cd qt-everywhere-src-5.15.2
2. 生成makefile文件
前面都和大佬的博客一致,但从“生成makefile文件”这一步开始,有些许问题。
由于没有指定xcd,又或是没有xcb相关库,在安装完成后,在QT Creator编译项目的时候会报错:Could not find the Qt platform plugin "xcb" in ""
目前问题已解决,参考博客有:
解决qt.qpa.plugin: Could not find the Qt platform plugin “xcb“ in ““-CSDN博客
首先列出生成makefile文件所需的命令,可以基本杜绝上述问题。
sudo apt-get install libxcb*
sudo apt-get install libxkbcommon*
./configure -recheck-all
./configure -prefix /usr/local/Qt-5.15.2 -xcb
若问题还是存在,可继续看2.1/2.2/2.3
在这里汇总一下,原因有三个:
2.1 插件目录(/plugins/platforms)下没有libqxcb.so
这是我遇到的问题,在执行了make install后,在QT安装目录下没有找到libqxcb.so。
原因是“生成makefile文件”时,未指定xcb,所以在这一步要执行命令
(PS:若此前生成过,建议删除整个文件夹,重新解压.tar.xz)
./configure -recheck-all
./configure -prefix /usr/local/Qt-5.15.2 -xcb
//-prefix后跟的地址是指定QT安装目录,自己定义即可
若报错:Feature ‘xcb’ was enabled, but the pre-condition ‘features.thread && libs.xcb && tests.xcb_syslibs && features.xkbcommon-x11’ failed.
大概率是系统未安装xcb相关依赖库,执行相关命令即可(无论有无问题,建议都执行这两条命令)
sudo apt-get install libxcb*
sudo apt-get install libxkbcommon*
xcb相关库安装完成后,执行./configure -recheck-all会看到xcb相关都是yes了,再执行./configure -prefix /usr/local/Qt-5.15.2 -xcb,便不再报错。
这时,进入 /usr/local/Qt-5.15.2/plugins/platforms,发现自动生成了libqxcb.so。
2.2 libqxcb.so与QT不兼容。
大概率不是这个问题,因为只要安装QT后能自动生成libqxcb.so,就不会不兼容,除非是从其他地方复制过来的,可能会出现不兼容。
例如,我将Qt Creator安装目录下的libqxcb.so拷贝过来后,执行
ldd /usr/local/Qt-5.15.2/plugins/platforms/libqxcb.so
发现libqxcb.so缺少的两个依赖库都是QT6的,但安装的是QT5。
2.3 QT未找到插件所在目录
若QT安装目录下/plugins/platforms自动生成了libqxcb.so这个文件,说明QT只是没有找到插件所在目录,可以通过修改环境变量解决。
//切换到root,方便后面的命令
sudo su -
//打开环境变量配置文件
vim /etc/profile
进入profile文件后,单击"I"进入编辑模式,在最底下添加
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/local/Qt-5.15.2/plugins/platforms
点击esc,再输入:wq保存退出,然后输入
source /etc/profile
若环境变量未生效,重启系统即可。
3. QT编译以及安装
我给虚拟机分配了12个逻辑处理器,编译QT却需要一两个小时,为了加快编译时间,需要给其分配足够的线程。
参考博客:jetson nano——编译安装Qt_jetson编译安装qt-CSDN博客
首先查看cpu的核心数
lscpu
可以看到CPU:12,说明核心数为12,然后设置编译线程数
make -j24 //通常为CPU核心数两倍
基本上几十分钟解决问题,这时继续安装即可。
make install
环境变量可配可不配,若不配置,则需要手动去QT Creator配置
4. QT Creator安装以及配置QT
直接去官网或者镜像源网站下载.run文件即可。或者直接用sudo apt install qtcreator安装也可以(版本为4.11),以下给出清华镜像源网址:
Index of /qt/archive/qtcreator/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
下载好后直接点击安装即可
然后就是配置QT版本,点击添加,选择刚才安装的QT目录/bin/qmake
接着添加套件,名称随便起,File system name决定了编译后的文件夹名。
Qt版本选择刚才添加好的QT版本,这样就可以了。
万事大吉,能够正常跑项目了,但所有字体都无法正常显示,并且QT报错如下
QFontDatabase: Cannot find font directory /usr/local/Qt-5.15.2/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
去网上查了查,发现是QT缺少字体库,解决方法是将字体导入/usr/local/Qt-5.15.2/lib/fonts目录下即可,我直接将windows的字体全部复制过来了,如图
三、安装MYSQL
我没有去官网下载安装包,而是直接用了apt install命令去安装
sudo apt install mysql-server
这样直接启动mysql就可以了
systemctl start mysql
然后就要登录mysql进行一些配置,如果直接登录不进去,说明没切换root
sudo su -
为了能顺利使用DBeaver来控制mysql数据库,要新建一个用户,让其可以被远程访问,并且授予其相关权限,以下是相关命令:
mysql -u root
create user '用户名'@'%' identified by '密码';
grant all privileges on *.* to '用户名'@'%' ;
flush privileges;
四、QT连接MySQL数据库
新建一个项目,写入代码
qDebug() << QSqlDatabase::drivers();
QT会列出所以安装好的驱动,若没有QMYSQL,则说明未安装MySQL驱动。
如何安装MySQL驱动可以参考博客:Linux下的QT对MySQL数据库操作(超详细)_linux qt 连接mysql-CSDN博客
五、小结
以上是我在银河麒麟系统上搭建QT、MySQL环境遇到的问题以及解决方法。
本来QT也是通过apt install安装的5.12.12版本,但缺少QT源码以及未安装MySQL驱动(安装驱动需要QT源码进行编译),所以想着通过源码编译安装QT,然后就碰到了缺少xcb的错误,导致走了很多弯路,特此记录。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)