运用Qt进行嵌入式开发的原因
在Windows下进行软件开发和Linux下进行开发的一大差异在于,Winodws下一般不需求运用者写Makefile,一般经过集成的开发环境开发。而在Linux中,很多开发环境要求咱们自己去手写Makefile,对新手来说不太友爱。因而新手能够经过Qt的QMake实现自动编写Makefile。为开发带来必定的便当。并且经过Qt能够便利的进行嵌入式程序的长途调试。
硬件平台
本文运用的方法在Zynq7000系列芯片和Zynq Ultrascales+系列芯片上进行过验证
需提前具备的开发环境
- 嵌入式设备,嵌入式设备文件系统中需求装置ssh服务和tftp服务
- qt源代码(5.14.2)
- qt creator x86版别(博主运用的是5.14.2版别)
- 穿插编译东西链
- 开发电脑装置openssh-server,openssh-passwd,gdb-multiarch(这款东西支撑和多种架构的嵌入式设备调试,灰常好用)
装置流程
装置qt creator
双击qt装置程序,装置qt creator,此进程比较简单。挑选一个不带中文途径的装置途径,勾选下图勾选的几个选项即可。装置成功后,打开qtcreator。新建一个程序测验是否装置成功。
留意:qt的工作途径不能包含中文字符,不然会编译失败!
编译qt源码
进行此步操作的目的主要是得到一个嵌入式开发版的qmake。
需求留意的是Qt源代码有一些奇古怪怪的bug,经过穿插编译东西链aarch64-linux-gnu编译qmake,qt4.9,qt5.3,qt5.9.7均报了一些古怪的过错。最后qt5.14.2一次性编译经过。主张若想运用其他版别qt尽量挑选高版别,bug较少。
在编译qt前要先确保现已把穿插东西链参加到环境变量中。可经过控制台输入aarch64-linux-gnu-gcc -v查询
- tar -vxf *** 解压qt源码程序
- cd *** 切换到装置目录
- 创立一个configure脚本
#!/bin/sh
./configure -prefix /home/xuxu/arm/sdk5.14 \
-opensource \
-release \
-no-pch \
-confirm-license \
-xplatform linux-aarch64-gnu-g++ \
-qt-zlib \
-no-iconv \
-no-gif \
-qt-libjpeg \
-no-opengl \
-skip qtdeclarative \
-skip qtquickcontrols \
-skip qtquickcontrols2 \
-no-cups \
-no-glib \
-no-dbus \
-no-rpath \
-no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \
-no-avx \
-no-openssl \
-nomake tools \
-no-libpng \
-nomake examples
-prefix代表的是指定生成文件的途径,-platform中指定穿插编译链linux-aarch64-gun-g++。留意linux-aarch64-gun-g++并不是直接代表穿插编译链,装备此项后qt会在qtbase/mkspecs下寻觅linux-aarch64-gun-g++目录,并读取其中的qmake.conf装备信息。这儿运用默许的就能够,不需求修改。
其他装备项,可经过./configure –help或百度查询,无特殊需求不主张修改。
4.装备结束后会生成一个Makefile,控制台输入make -j*。编译较慢,主张运用多核。
5.控制台输入make install。全部执行正常则会在指定目录下生成咱们需求的文件。
装备qt creator
- 运转qt creator。挑选 东西->选项进入设置界面,挑选设备
2. 挑选增加->Linux设备->设备Ip(本文选用运用暗码的方法衔接设备) 3. 增加完成后,挑选Test测验。若设备检测成功代表设备检测正常。留意测验rsync服务是否正常,若设备装置了rsync服务,则可经过运用rsync服务进行长途调试,不然运用另一种运用Openssh服务的方法 4. 挑选设置界面中的Kits->Debuggers。新建一个调试器,挑选调试器途径。我这儿运用的是gdb-multiarch,好处是能够衔接多版别的gdbserver,比较便利。也能够运用make出来的gdb,生成gdb方法不再这儿介绍。点击apply。
5. 挑选编译器,增加一个C语言和C++的编译器。途径挑选穿插东西链下的gcc和g++即可。点击Apply
6.挑选Qt Vertions增加一个Qt vertion,挑选刚刚编译qt生成的qmake。(黄色感叹号是版别不匹配问题,不影响运用)
7. 点击构建套件,增加一个构建套件,挑选上文增加的设备、编译器、调试器、qt vertion,如下图。
8. 拷贝gdbserver至设备 能够运用穿插东西链里的gdbserver,将其移动到设备/usr/bin下即可
运转测验
有rsync东西的调试进程
此时能够衔接板子,确保衔接成功后,即可开端调试。
别的,需求指定调试运转途径。在pro中参加指令。
target.path = /mnt
INSTALLS += target
无rsync东西调试进程
1.点击项目,点击需求装备的构建套件,点击run。删去经过SFTP上传。
- 在增加Deploy步骤中增加CustumProcessStep
ssh
-p %{Device:SshPort} %{Device:UserName}@%{Device:HostAddress} 'mkdir -p %{CurrentRun:Executable:Path}'
scp
-P %{Device:SshPort} %{CurrentRun:Executable:FileName} %{Device:UserName}@%{Device:HostAddress}:%{CurrentRun:Executable:FilePath}
- 最后运转结果
改定,能够开心的开发,调试,打断点了!!!
最后
嵌入式开发还能够选用另一种经过VsCode进行长途调试的方法。此方法不在此文描述~