<div id="navCategory"></div>
讯享网
1.1.1 通用交叉编译工具链
gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
1.1.2 qt源码
qt-everywhere-src-5.12.9.tar.xz
下载地址:https://download.qt.io/archive/qt/5.12/5.12.9/single/
1.1.3 tslib(触摸屏校准插件)
tslib-1.21.tar.bz2
下载git地址:https://github.com/libts/tslib
1.1.4 fonts字体库(qt支持中文)
DroidSansFallback.ttf
1、Ubuntu版本:16.04
2、Qt应用程序版本:Q5.14.2
3、开发板:正点原子阿尔法开发板(I.MX6ULL)
4、触摸屏:正点原子RGB触摸屏4.3寸、800*480
1、将交叉编译工具包(gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz)拷贝到ubuntu的/usr/local/arm/目录下。
2、在当前目录解压交叉编译工具包

3、解压完成后,将路径加入到环境变量中/etc/profile文件
在末尾加入:

4、重新使能环境变量
5、查看交叉编译工具是否添加成功

出现这个则说明通用的交叉编译工具链安装成功,版本为4.9.4
没有的话,检查/etc/profile里面添加的文件路径是否正确
至此,通用的交叉编译工具链安装完成
2.2.1 编译这个有什么用呢?
2.2.2 拷贝qt源码到ubuntu

拷贝源码到你Ubuntu指定的目录下面,解压。(后面这个路径需要用到)
2.2.3 修改qmake.conf文件

编辑 qtbase/mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf文件

添加红色框里面的内容:

修改之后保存。
2.2.4 修改配置编译选项
在qt源码目录下有一个configure的脚本,使用对qt源码进行配置的。可以根据自己的需求裁剪一些不必要的功能,编译之后lib库文件大小当然也会相应的缩小。
终端输入 https://www.jb51.net/article/configure -help 可以查看配置选项
这里搞在弄一个shell脚本,进行配置qt源码:
终端输入 vim autoconfigure.sh
输入下面指令:
倒数第三行、第二行是tslib库的头文件路径和库文件路径,根据自己的填入即可,tslib的编译后面会讲到。
这个是我使用的配置文件,测试是没有问题的。直接复制的话注意每一行的那个(换行符)后面不要留空格,留空格的话执行会报找不到命令错误。
修改完成之后,给脚本加上可执行权限
之后执行脚本


出现这种则说明配置完成。
2.2.5 编译qt源码
接上面,配置后面提示、输入make、现在就编译源码。
输入make install,装载编译后源码到执行目录。
这个的指定目录就是autoconfigure.sh这个脚本第一行的路径。

我这里是在qt源码的根目录下新建一个arm-qt目录,大家也指定其他目录。
终端输入make、开始编译qt源码

等待编译完成。

源码编译完成后,在终端输入make install,将生成的lib库文件拷贝到指定的目录里面,我这指定的是qt源码目录下arm-qt文件夹里面。
等待拷贝完成后,进入arm-qt文件夹里面,查看内容:

至此,QT源码编译就完成了,后面会用到arm-qt文件夹里面的东西。
2.3.1 拷贝解压tslib到Ubuntu
开始之前,先安装几个工具,编译tslib库时需要用到。

tslib源码包大家自行拷贝解压到自己的目录下:

我这里已经拷贝解压了,大家根据自己的目录拷贝解压即可。
2.3.2 配置tslib
进入tslib文件夹里面,看到有一个configure的文件,和qt源码根目录里面的一样,也是一个配置脚本。我们需要执行这个脚本来指定使用交叉工具链和编译后生成文件的存放路径。
执行下列命令:
这里/home/wx/linux/qt/tslib/tslib-1.21/arm-tslib路径是我的存放路径,你也可以在你tslib根目录下创建一个arm-tslib文件夹用于 存放编译后的文件。

等待配置完成之后就可以执行make.
终端输入make回车,开始编译tslib。

如果之前你已经编译过,那make之前需要执行make clean命令,把之前make编译的文件删除掉,不执行好像也可以,个人感觉最好清一下。
等待make完成之后,执行sudo make install指令(不加sudo好像不行,没权限)。


make install时报这个错误,我记得我第一次编译没问题的,很奇怪,百度找找了。

配置的时候参数改成上面那样就没有问题,所以有一些告警,可以忽略。


看一下文件的类型:是不是ARM架构下的文件

是arm架构,没问题,如果你的是x86架构,请检查你的交叉编译工具是否正确。
至此,tslib库编译已经完成。
2.4.1 qt creator环境配置
安装qt creator就不讲了,大家不会的百度很容易找到。
打开qt creator软件
在菜单栏中选择工具->选项->kits->Qt Versions->addr




配置kits:

这里图我就直接贴正点原子的了,感觉挺易懂明了的。
2.4.2 编译测试qt程序

创建好工程后,编写测试应用程序。
编写完成之后,Debug那里选择要使用kits。

选择ARM架构的开发套件编译之后的可执行文件是ARM架构,可以在arm开发板上运行,选择x86架构的开发套件可执行文件是x86架构,直接可以在ubuntu里面或者windows里面运行,这里我们选择ARM架构的套件。
选好之后,在菜单栏构建->build All Projects;

最下面状态栏点击4编译输出,出现下列提示,则说明编译成功。

个人感觉可以先选择x86的开发套件,在windos下直接运行,看看效果,然后在选择arm架构的套件编译。
注意:选择arm架构的开发套件生成的可执行文件是无法直接运行的,因为你的机器(电脑)是x86架构。
进入qt的工程目录下面,查找最后生成的可执行文件:

进入到build-test_demo-ARM_Qt5_12_9-Debug目录里面:

至此,Qt测试应用程序就做好了。
2.5.1 拷贝库文件到开发板文件系统
我这里用的是SD卡启动,内核、设备树、根文件系统都在SD卡里面。
1、将qt源码目录下arm-qt文件拷贝到开发板根文件系统/usr/lib/下面。

我这里SD卡的分区2(存放的根文件系统)已经挂载到ubuntu的/media/wx/rootfs/下面了,故这里直接拷贝即可,注意要加上sudo权限。

2、将tslib库文件也拷贝到开发板根文件系统/usr/lib/下面

arm-qt、arm-tslib都是前面编译好的文件。




特别注意:这里是指开发板的根文件目录下面,不要拷贝你ubuntu的根目录下面,不然就尴尬了。
2.5.2 修改开发板/etc/profile,添加环境变量
前面你把这些库文件都添加进去了,不添加环境变量系统是找不到的。

上面是我profile里面的内容,简单说一吧,其实我也刚接触不是了解太多,不正确的地址请指正哈。
export TSLIB_ROOT=/usr/lib/arm-tslib //tslib的放的位置
export TSLIB_TSDEVICE=/dev/input/event1 //触摸屏的设备文件
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf //tslib库的配置文件
export QT_ROOT=/usr/lib/arm-qt //qt源码库的位置
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1 //qt程序触摸对应的设备文件,我就是因为没有加这个导致qt程序运行起来后,无法触摸点击,鼠标是可以动
export QT_QPA_FONTDIR=/etc/fonts/ //字体库的位置、其他位置应该也可以
好了,到这里差不多了。
将SD插入开发板中,设置开发板从SD启动。

进入/temp目录里面,执行test_demo
cd /temp/
https://www.jb51.net/article/test_demo & /&是后台运行/

可以看到中文显示和触摸点击都ok!大功告成。
还有一点:
你编译qt编码的交叉编译器必须和编译qt测试程序的编译器一致,不然可能会有问题。
到此这篇关于嵌入式QT移植的实现的文章就介绍到这了,更多相关嵌入式QT移植内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/182404.html