最近在公司实习,上级安排了个移植Qt到开发板的任务给我,对于我来说这也是完全没有接触过的东西了,比较懵逼,一开始在网上也找了很多方法,但是总是有各种各样的奇怪问题又很难解决,通过一段时间的摸索也大概熟悉了流程,成功移植,编译出了qt的代码库。小编也是新手,这里旨在做一个记录,方便以后需要用到回来看看,如有错误的请各位小伙伴指出,谢谢啦!
一、开发环境
操作平台:V Scode
编译器:aarch64-linux-gnu version7.5.0
Qt版本:qt-everywhere-opensource-src-5.9.6.tar.xz
下载路径:https://download.qt.io/archive/qt/
打不开网址,找不到也没关系,小编给大家准备好了,需要自取!
链接:https://pan.baidu.com/s/1VSKF7XbLhZ9yuPpFDhEIBA
提取码:hbib
注意:小编后期不使用qtcreator去编译的,使用的是纯代码qmake,所以没有使用qt的.run文件程序,虽然qtcreator比较简单,但是到复杂的项目里,还得是纯代码的实现比较好,这是实习公司的主管说的,是不是真的咱也不太清楚,干活就完事了哈哈哈!那么对于qtcreator的使用大家可以另外找一下,这不影响本文的qt移植,话不多说,这就开始吧!
1、下载qt-everywhere-opensource-src-5.9.6.tar.xz 源码包,将其放在/home/xjchen/fullhan/mc6670_sdk/QTtest目录下
二、解压
2.将qt-everywhere-opensource-src-5.9.6.tar.xz进行解压
指令: tar -xvf qt-everywhere-opensource-src-5.9.5.tar.xz -C ./
三、相应的修改与qtconfigure配置
3.配置编译脚本
进入qt-everywhere-opensource-src-5.9.6文件夹添加set.sh脚本,内容如下
#!/bin/sh
./configure -prefix /usr/local/qt5.9 \
-opensource \
-debug \
-confirm-license \
-xplatform linux-arm-gnueabi-g++ \
-no-opengl \
-no-pch \
-shared \
-no-iconv \
-no-xcb \
脚本说明:
-prefix /usr/local/qt5.9 \ 是安装路径
-opensource: 编译Qt的开源版本
-debug:编译Qt的debug版本,开启调试
-confirm-license:自动确认许可
-xplatform <target>:选择交叉编译时的目标 mkspec,[PLATFORM]
-no-opengl:禁止对 OpenGL 的支持。
-shared:构建Qt共享库
-no-iconv:禁用对iconv(3)的支持
-no-xcb:禁止用 X11 的支持,选择使用 xcb-* 库
给脚本权限:chmod +x set.sh
4.配置qmake.conf
特别说明
arm-linux-gnueabihf-gcc 这是自己的交叉编译工具链
arm-linux-gnueabihf-gcc -lts 加上后面的 -lis 是支持tslib触摸屏的,我们这里不使用
在当前目录:vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
打开qmake.conf更改配置:
本地原程序:
更改后的:
将所有的把所有的arm-linux-gnueabi**改为aarch64-linux-gnu**(aarch64-linux-gnu是自己的编译器,具体看自己装的是什么编译器)
5.执行配置QT脚本:
等待一会后,开始执行配置,如图所示说明你已经配置成功了,接下来按提示操作
6.编译安装
特别说明:make 编译 的时间会有有点长,耐心等待即可。
终端输入:make -j4,等待编译即可:
等待20分钟左右Make -j4编译完后:
四、移植到ARM开发板
特别说明:/usr/local/qt5.9 这个路径是之前配置编译脚本选择的安装路径。
把/usr/local/qt5.9里面lib plugins 拷贝到ARM开发板的 /home/public/nfsshare/xjchen/lib/
拷贝成功:
五、ARM开发板配置环境
# Qt qwx config
expor tLD_LIBRARY_PATH=/home/public/nfsshare/xjchen/lib/lib //(对应lib库的路径)
QT_QPA_PLATFORM_PLUGIN_PATH=/home/public/nfsshare/xjchen/lib/plugins(plugins路径)
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_DEBUG_PLUGINS=1 (打印调试信息)
六、小结
到这里Qt移植到嵌入式开发板的流程就完成了,主要就是编译出qt的库,因为我们做qt项目的话需要的就是调用这些库来进行图形界面话,在再次移植qt的过程中我也踩了很多坑,花了挺多时间,因为对这些完全没有接触过,很多东西不同的,比较多的时间花在了探索上面了,不过通过自己的探索也有了很深的印象,总感觉每个人都会到很多奇奇怪怪的东西,运气好的话一次两次搞定,运气不好可能搞很多次都不行,像我就是后者了,后面有空我会记录一期自己这次移植QT遇到的常见错误,如果你也有很多错误,不妨去我的主页看看吧,说不定就有了呢哈哈哈哈!同时也会分享一些简单的qt代码编写,因为我是不使用qtcreator去编写的,用纯代码编写,感兴趣的可以去看看哦! 好了,这期就和大家聊这么多啦, 谢谢大家查阅!
参考文章:秋知叶i——【嵌入式】--- 交叉编译 移植 QT 5.9.6 到 ARM开发板 和搭建嵌入式
非常感谢这位博主的文章!!