第11章 嵌入式Linux Qt应用开发_第1页
第11章 嵌入式Linux Qt应用开发_第2页
第11章 嵌入式Linux Qt应用开发_第3页
第11章 嵌入式Linux Qt应用开发_第4页
第11章 嵌入式Linux Qt应用开发_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《嵌入式系统原理与开发教程》嵌入式LinuxQt应用开发主讲人:赖树明东莞理工学院01LinuxQt开发环境搭建03配置RK3399Qt版本编译环境04课程作业任务02移植Qt到RK3399目标板01LinuxQt开发环境搭建Qt相关软件下载安装QtCreator安装格式化插件LinuxQt开发环境搭建Qt相关软件下载01下载地址

http://download.qt.io/archive/qt/打开下载网页,点击5.12进入5.12所有子版本下载页面,我们选择5.12.0版本,进入打点击qt-opensource-linux-x64-5.12.0.run即可下载到。Linux历史LinuxQt开发软件下载复制到qt-opensource-linux-x64-5.12.0

Ubuntu系统中,打开命令终端,给它增加执行权限:lai@lai-machine:~/work/source$chmod+xqt-opensource-linux-x64-5.12.0.run运行安装程序:lai@lai-machine:~/work/source$./qt-opensource-linux-x64-5.12.0.run接下来会弹出安装界面,根据提示完成安装即可。Linux安装QtCreatorLinuxQt开发环境搭建Qt相关软件下载01下载地址

http://download.qt.io/archive/qt/打开下载网页,点击5.12进入5.12所有子版本下载页面,我们选择5.12.0版本,进入打点击qt-opensource-linux-x64-5.12.0.run即可下载到。Linux历史LinuxQt开发软件下载复制到qt-opensource-linux-x64-5.12.0

Ubuntu系统中,打开命令终端,给它增加执行权限:lai@lai-machine:~/work/source$chmod+xqt-opensource-linux-x64-5.12.0.run运行安装程序:lai@lai-machine:~/work/source$./qt-opensource-linux-x64-5.12.0.run接下来会弹出安装界面,根据提示完成安装即可。Linux安装QtCreatorLinuxQt开发环境搭建Qt相关软件下载01下载地址

http://download.qt.io/archive/qt/打开下载网页,点击5.12进入5.12所有子版本下载页面,我们选择5.12.0版本,进入打点击qt-opensource-linux-x64-5.12.0.run即可下载到。Linux历史LinuxQt开发软件下载复制到qt-opensource-linux-x64-5.12.0

Ubuntu系统中,打开命令终端,给它增加执行权限:lai@lai-machine:~/work/source$chmod+xqt-opensource-linux-x64-5.12.0.run运行安装程序:lai@lai-machine:~/work/source$./qt-opensource-linux-x64-5.12.0.run接下来会弹出安装界面,根据提示完成安装即可。Linux安装QtCreatorLinuxQt开发环境搭建Qt相关软件下载01Linux历史Linux安装QtCreator安装过程比较简单,这里只给出需要我们配置的界面,如右图所示。LinuxQt开发环境搭建安装完成其他插件01QtCreator编译时依赖libgl库,默认情况下,Ubuntu是没有安装的,需要用户自己安装,否则

后面编译QT工程时会报错:compilationterminated..........:fatalerror:GL/gl.h:Nosuchfileordirectory

解决方法是在命令行终端中在线安装依赖库:

sudoapt-getinstalllibgl1-mesa-dev-yLinux历史libgl

库安装LinuxQt开发环境搭建安装完成其他插件01在Ubuntu上安装搜狗输入法,启用fcitx输入系统后QtCreator无法输入中文,原因是缺少fcitx的支持库libfcitxplatforminputcontextplugin.so,解决方法如下,在命令行进行以下操作:

$dpkg-Lfcitx-frontend-qt5|grep.so

$cp/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so

如果没有,则下载安装相关库,如下所示:

sudoapt-getinstallfcitx-frontend-qt5解决QtCreator软件无法输入中文问题LinuxQt开发环境搭建安装完成其他插件01在Ubuntu上安装搜狗输入法,启用fcitx输入系统后QtCreator无法输入中文,原因是缺少fcitx的支②将步骤①中所示路径下的库文件复制到Qt插件目录下,如Qt的安装目录是/home/lai/Qt5.12.0,则输入命令,如下所示:

$cd/home/lai/Qt5.12.0/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/

$

cp/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so./

修改libfcitxplatforminputcontextplugin.so文件权限,如下所示:

$chmod

+x

libfcitxplatforminputcontextplugin.so

重启Ubuntu系统,进入系统后重新运行QtCreator,就可以在QtCreator编辑器中正常输入中文。解决QtCreator软件无法输入中文问题LinuxQt开发环境搭建安装完成其他插件01QtCreator可安装第三方的代码格式化工具,使用第三方代码格式工具可以让代码排版更规范、标准,本节介绍QtCreator中集成ArtisticStyle格式化工具来实现代码的自动格式化排版。下载地址:/projects/astyle/files/astyle/astyle%203.1/

本书选择下载astyle_3.1_linux.tar.gz,这个文件是Linux系统下使用程序源码。安装格式化插件Linux系统下载astyle_3.1_linux.tar.gz,复制到Linux用户家目录中,解压astyle_3.1_linux.tar.gz,然后使用cd命令进入到解压出来的ArtisticStyle源码目录的build/gcc目录。编译ArtisticStyle$cd~/astyle/build/gcc输入make命令进行编译:

输入sudomakeinstall命令安装

到软件被安装到/usr/bin目录中了LinuxQt开发环境搭建安装完成其他插件01QtCreator可安装第三方的代码格式化工具,使用第三方代码格式工具可以让代码排版更规范、标准,本节介绍QtCreator中集成ArtisticStyle格式化工具来实现代码的自动格式化排版。下载地址:/projects/astyle/files/astyle/astyle%203.1/

本书选择下载astyle_3.1_linux.tar.gz,这个文件是Linux系统下使用程序源码。安装格式化插件Linux系统下载astyle_3.1_linux.tar.gz,复制到Linux用户家目录中,解压astyle_3.1_linux.tar.gz,然后使用cd命令进入到解压出来的ArtisticStyle源码目录的build/gcc目录。编译ArtisticStyle$cd~/astyle/build/gcc输入make命令进行编译:

输入sudomakeinstall命令安装

到软件被安装到/usr/bin目录中了LinuxQt开发环境搭建安装完成其他插件01使能Beautifier插件打开QtCreator,单击帮助→关于插件→C++→勾选Beautifier(experimental)插件,关闭QtCreator并重启,使能Beautifier插件界面,如图所示。QtCreator中添加astyle格式化插件LinuxQt开发环境搭建安装完成其他插件01设置代码格式化打开工具→选项→Beautifier,具体的设置如图所示。QtCreator中添加astyle格式化插件LinuxQt开发环境搭建安装完成其他插件01Beautifier插件选项在Value中输入以格式化参数,后点击OK,具体格式化参数放在后面PPT看。QtCreator中添加astyle格式化插件LinuxQt开发环境搭建安装完成其他插件01Beautifier

格式参数#--style=attach#--style=allman--style=k&rindent-col1-comments#注释和代码缩进对齐。indent=spaces=4 #缩进采用4个空格indent-switches#-S设置switch整体缩进indent-cases #-K设置cases整体缩进indent-namespaces#-N设置namespace整体缩进indent-preproc-block#-xW设置预处理模块缩进QtCreator中添加astyle格式化插件LinuxQt开发环境搭建安装完成其他插件01Beautifier

格式参数indent-preproc-define#-w设置宏定义模块缩进 pad-oper

#-p操作符前后填充空格delete-empty-lines

#-xe删除多余空行add-braces

#-j单行语句加上大括号align-pointer=name#*、&这类字符靠近变量名字#align-pointer=type*、&这类字符靠近类型break-blocks

#语句块(如if,for,while)前后增加空行。add-braces

#语句或者语句块增加大括号。attach-closing-while

#使用do-while语句时,将while与结束括号放置同一行。QtCreator中添加astyle格式化插件LinuxQt开发环境搭建安装完成其他插件01Beautifier插件选项单击Add按钮,进入如图11.17所示界面。具体的设置如图所示。QtCreator中添加astyle格式化插件02移植Qt到RK3399目标板制作精简的根文件系统移植tslib到ARM开发板移植Qt5.12到ARM开发板移植Qt到RK3399目标板制作精简的根文件系统02嵌入式Linux产品中,如果不需要安装庞大的Ubuntu系统,可以使用busybox制作一个精简根文件系统,然后打包为ext4格式文件系统,下载到开发板替换原来出厂系统中的根文件系统这部分映像,u-boot和kernel映像不需要替换。使用这个精简的根文件系统,我们可以在上面移植Qt5,编写图形界面程序。概述根文件系统制作1.把本节配套资料的rootfs-busybox-snd-ok-rk3399.tar.bz2压缩包和make-rootfs.sh复制到Ubuntu系统的工作目录(请保持它们在同级目录下),打开命令终端进入文件所在目录解压:

tarxfrootfs-busybox-snd-ok-rk3399.tar.bz2

。2.给打包脚本增加可执行权限:

chmod+xmake-rootfs.sh3.打包文件系统生成映像文件:./make-rootfs.shrootfs

回车后要输入Ubuntu密码,因为脚本中使用到了sudo临时提升权限。执行后需要一定的时间,会生成linux-rootfs.img文件系统映像。移植Qt到RK3399目标板制作精简的根文件系统02连接好开发板,并且使用Type-C线把开发板和电脑相连,打开AndroidTool固件更新工具,同时按下开发板的RESET按键和RECOVERY按键,然后先松开RESET按键,2s后松开RECOVERY按键,让开发板进入Loader模式。如下所示:注意:启动AndroidTool工具,默认选项可能没有的rootfs选项,需要自己先在软件上增加这栏,再单击界面上的“读取分区表”按键。下载根文件系统到开发板移植Qt到RK3399目标板制作精简的根文件系统02读取完分区表后,把rootfs栏目前面的复选框选上,并且该栏单击右边的空格加载上面做好的根文件系统文件,最后单击“执行”开始下载根文件系统,如图所示。下载根文件系统到开发板移植Qt到RK3399目标板制作精简的根文件系统02下载好文件系统后,系统自动重启,在开发板上串口终端上就可以输入用户名和密码登录开发板,使用命令和开发板进行交互了。使用busybox制作的精简文件系统,进入后,LCD屏是没有图形显示的,图形显示需要我们写应用程序,比如后面的移植Qt,然后编写Qt程序,运行起来后就会显示在开发板的LCD屏上。测试启动系统输入几次回车……edu118login:root#输入root用户名登录Password:#输入root用户密码,配套的系统是123456login[233]:rootloginon'console'#密码正确就可以登录成功1.安装autoconf工具:

sudoapt-getinstallautoconf2.复制tslib-1.20.tar.gz到linux系统,然后打开命令终端

解压源码:

tar-xftslib-1.20.tar.bz23.配置

lai@lai-machine:tslib-1.20$./autogen.sh......lai@lai-arm-machine:tslib-1.20$./configure\--prefix=/opt/tslib\--host=aarch64-linux-gnu\--enable-static--enable-shared\CC=aarch64-linux-gnu-gcc\CPP="aarch64-linux-gnu-gcc-E"移植Qt到RK3399目标板移植tslib到ARM开发板024.编译、安装tslib交叉编译器环境变量是在普通用户的~/.bashrc文件中导出的,只在当前用户环境下才有效,当使用sudo后就会找不到编译器,因此我们可以给sudo设置一个别名,让它可以携带当前用户的环境变量,要注意的是,该命令只是当前命令终端临时生效,如下:lai@lai-arm-machine:tslib-1.20$

aliassudo='sudoenvPATH=$PATH'lai@lai-arm-machine:tslib-1.20$aliassudo='sudoenvPATH=$PATH'执行编译和安装命令:lai@lai-arm-machine:tslib-1.20$make-j8lai@lai-arm-machine:tslib-1.20$sudomakeinstall注意:由于在普通用户下操作,安装到/opt目录,需要有root权限,因此执行安装命令时候前面需要添加sudo临时提升权限。移植Qt到RK3399目标板移植tslib到ARM开发板025.修改tslib配置文件内容把

/opt/tslib/etc/ts.conf内容全部删除,输入内空,如下所示:module_rawinputmodulepthrespmin=1modulevariancedelta=30moduledejitterdelta=100modulelinear以上内容实际上只是把第2行#module_rawinput前面的#注释取消。6.复制生成的tslib库相关文件复制到开发板根文件系统中把整个编译生成的/opt/tslib文件夹复制到根文件系统opt目录中,本文~/work/nanopc-t4/rootfs是根文件系统路径,请大家根据实际情况修改,如下所示:lai@lai-arm-machine:tslib-1.20$cp/opt/tslib~/work/nanopc-t4/rootfs/opt/-rf移植Qt到RK3399目标板移植tslib到ARM开发板027.接下来在虚拟机的Ubuntu系统中操作,在前面解压出来的精简根文件系统rootfs文件夹的opt/目录中创建tslib-env.sh文件,如下(如Vim不熟悉,也可以使用gedit编辑器):$vim~/work/nanopc-t4/rootfs/opt/tslib-env.sh注意:~/work/nanopc-t4/rootfs/是你自己的根文件系统路径,请根据实际情况修改。并添加以下内容:移植Qt到RK3399目标板移植tslib到ARM开发板02#!/bin/sh#注意:event1是你系统中触摸屏的设备名,根据实际情况修改exportTSLIB_TSDEVICE=/dev/input/event1#注意:/opt/tslib是前面移植好的tslib存放在开发板根文件系统的目标路径exportTSLIB_ROOT=/opt/tslib#这个是存放校正参数的文件exportTSLIB_CALIBFILE=/etc/pointercal#存放配置信息文件,不需要修改exportTSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf#存放插件库路径,不需要修改exportTSLIB_PLUGINDIR=$TSLIB_ROOT/lib/tsexportTSLIB_CONSOLEDEVICE=none#LCD屏显示设备名称,根据实际情况修改,一般也是fb0exportTSLIB_FBDEVICE=/dev/fb0#导出搜索触摸屏插件库路径到环境变量,不需要修改exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib#导出触摸屏测试程序路径到环境变量,不需要修改exportPATH=$PATH:$TSLIB_ROOT/bin移植Qt到RK3399目标板移植tslib到ARM开发板02保存退出后,给文件增加可执行权限:$sudochmod+x~/work/nanopc-t4/rootfs/opt/tslib-env.sh说明:~/work/nanopc-t4/rootfs/是前面解压出来的Busybox制作的精简根文件系统路径,读者根据自己的实际情况修改。移植Qt到RK3399目标板移植tslib到ARM开发板028.编辑开发板根文件系统etc/profile文件,导入前面写好的触屏环境变量初始化脚本,如下操作:$vim~/work/nanopc-t4/rootfs/etc/profile添加内容,如下所示:source/opt/tslib-env.sh9.打包文件系统,下载到开发板上参考本章中前面打包文件系统的步方法,把添加了触屏功能的根文件系统生成的映像文件下载到开发板上。下载完成,重新启动开发板,在串口终端进行登录操作10.触摸屏校正登录开发板成功后,运行触摸屏校正程序。首先使用cd命令进入/opt/tslib/bin/目录,在命令终端中输入./ts_calibrate,LCD屏上会出现十字坐标,依次单击触摸屏上出现的十字坐标中心,单击5个点后完成触摸屏校验,校正完成后会在根文件系统的etc目录下生成一个名为pointercal的校正文件。[root@lai-arm-machine~]#./ts_calibrateaad.c:intadd(inta,intb){intc;c=a+b;returnc;}编写功能函数sub.c:intsub(inta,intb){intc;c=a-b;returnc;}aad.h:#ifndef__ADD_H__#define__ADD_H__intadd(inta,intb);#endifsub.h:#ifndef__SUB_H__#define__SUB_H__intsub(inta,intb);#endifgcc-cadd.c-oadd.ogcc-csub.c-osub.o编译函数为.o文件ar-crsvlibfunction.aadd.osub.o把.o文件封装成.a执行上面命令后会生成libfunction.a静态库文件,后面就可以供第三方程序使用。移植Qt到RK3399目标板移植Qt5.12到ARM开发板02main.c:#include<stdio.h>#include"add.h"//引入函数声明#include"sub.h"//引入函数声明intmain(void){printf("2+1=%d;\r\n2-1=%d\r\n",add(2,1),sub(2,1));return0;}测试代码编写工程文件存放结构├──include│├──add.h│└──sub.h└──src├──add.c├──libfunction.a├──main.c└──sub.c说明:编译为.a文件后,可以把add.c、sub.c删除,我们只需要.a文件即可。编译:gcc-omainmain.clibfunction.a-I../include/

--->这种是把库当成源文件一样使用或者:gcc-omainmain.c-I../include-L./-lfunction--->这种是标准的使用方法编译生成main可执行程序后可以删除.a文件,不会影响到后面可执行程序的运行,因为它已复制一份代码到其中。运行:./main移植Qt到RK3399目标板动态库与静态库的比较0203配置RK3399Qt版本编译环境RK3399Qt套件配置RK3399Qt配置测试编译Qt程序①添加ARM版本编译器依次打开软件的工具->选项->kits->编译器,如图11.20所示。单击图11.20③的添加→GCC→C,会弹出对话框,如图11.21所示。配置RK3399Qt版本编译环境03配置QtCreator软件RK3399Qt套件配置①添加ARM版本编译器依次打开软件的工具->选项->kits->编译器,如图11.20所示。单击图11.20③的添加→GCC→C,会弹出对话框,如图11.21所示。配置RK3399Qt版本编译环境03配置QtCreator软件RK3399Qt套件配置配置RK3399Qt版本编译环境03配置QtCreator软件RK3399Qt套件配置配置RK3399Qt版本编译环境03配置QtCreator软件RK3399Qt套件配置配置RK3399Qt版本编译环境03配置QtCreator软件RK3399Qt套件配置上图中编译器的名称可以自己定义,编译器的路径是arm64gcc的编译器路径,如果你不清楚arm64gcc编译器的路径是什么,可以通过命令终端查找,如下所示:lai@lai-machine:~$whichaarch64-linux-gnu-gcc/usr/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc然后单击apply按钮即可,配置RK3399Qt版本编译环境03配置QtCreator软件RK3399Qt套件配置

使用同样的方法添加ARM版本的g++编译器,然后按照上图的顺序依次单击,完成ARM版本编译器添加。配置RK3399Qt版本编译环境03配置QtCreator软件RK3399Qt套件配置添加ARM版本Qt:依次单击工具→选项→kits→QtVersions→添加,根据提示选择ARM版本QtSDKqmake,如图所示。配置RK3399Qt版本编译环境03配置QtCreator软件RK3399Qt套件配置添加Qt编译套件:单击构建套件→手动设置→添加,然后填写文本框中的内容,其中名称自定义,编译器填写前面添加的编译器,Qt版本选择前面添加的QtSDK版本,按照顺序操作即可,,如图所示。1.先新建一个Qt工程或打开一个Qt示例工程配置RK3399Qt版本编译环境03交叉编译Qt程序新建Qt工程菜单1.先新建一个Qt工程或打开一个Qt示例工程配置RK3399Qt版本编译环境03交叉编译Qt程序新建Qt工程菜单配置RK3399Qt版本编译环境03交叉编译Qt程序设置Qt项目名称及保存位置选择桌面版和ARM版本的套件,到时可以切换ARM版本Qt版本和桌面版Qt版本编译套件,选择工程开发套件如图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论