运用Qt进行嵌入式开发的原因

在Windows下进行软件开发和Linux下进行开发的一大差异在于,Winodws下一般不需求运用者写Makefile,一般经过集成的开发环境开发。而在Linux中,很多开发环境要求咱们自己去手写Makefile,对新手来说不太友爱。因而新手能够经过Qt的QMake实现自动编写Makefile。为开发带来必定的便当。并且经过Qt能够便利的进行嵌入式程序的长途调试。

硬件平台

本文运用的方法在Zynq7000系列芯片和Zynq Ultrascales+系列芯片上进行过验证

需提前具备的开发环境

  1. 嵌入式设备,嵌入式设备文件系统中需求装置ssh服务和tftp服务
  2. qt源代码(5.14.2)
  3. qt creator x86版别(博主运用的是5.14.2版别)
  4. 穿插编译东西链
  5. 开发电脑装置openssh-server,openssh-passwd,gdb-multiarch(这款东西支撑和多种架构的嵌入式设备调试,灰常好用)

装置流程

装置qt creator

双击qt装置程序,装置qt creator,此进程比较简单。挑选一个不带中文途径的装置途径,勾选下图勾选的几个选项即可。装置成功后,打开qtcreator。新建一个程序测验是否装置成功。

留意:qt的工作途径不能包含中文字符,不然会编译失败!

嵌入式开发基础环境之搭建Qt嵌入式Linux开发环境

编译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查询

  1. tar -vxf *** 解压qt源码程序
  2. cd *** 切换到装置目录
    嵌入式开发基础环境之搭建Qt嵌入式Linux开发环境
  3. 创立一个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

  1. 运转qt creator。挑选 东西->选项进入设置界面,挑选设备

嵌入式开发基础环境之搭建Qt嵌入式Linux开发环境
2. 挑选增加->Linux设备->设备Ip(本文选用运用暗码的方法衔接设备) 3. 增加完成后,挑选Test测验。若设备检测成功代表设备检测正常。留意测验rsync服务是否正常,若设备装置了rsync服务,则可经过运用rsync服务进行长途调试,不然运用另一种运用Openssh服务的方法
嵌入式开发基础环境之搭建Qt嵌入式Linux开发环境
4. 挑选设置界面中的Kits->Debuggers。新建一个调试器,挑选调试器途径。我这儿运用的是gdb-multiarch,好处是能够衔接多版别的gdbserver,比较便利。也能够运用make出来的gdb,生成gdb方法不再这儿介绍。点击apply。

嵌入式开发基础环境之搭建Qt嵌入式Linux开发环境
嵌入式开发基础环境之搭建Qt嵌入式Linux开发环境
5. 挑选编译器,增加一个C语言和C++的编译器。途径挑选穿插东西链下的gcc和g++即可。点击Apply

嵌入式开发基础环境之搭建Qt嵌入式Linux开发环境
6.挑选Qt Vertions增加一个Qt vertion,挑选刚刚编译qt生成的qmake。(黄色感叹号是版别不匹配问题,不影响运用)

嵌入式开发基础环境之搭建Qt嵌入式Linux开发环境
7. 点击构建套件,增加一个构建套件,挑选上文增加的设备、编译器、调试器、qt vertion,如下图。

嵌入式开发基础环境之搭建Qt嵌入式Linux开发环境
8. 拷贝gdbserver至设备 能够运用穿插东西链里的gdbserver,将其移动到设备/usr/bin下即可

运转测验

有rsync东西的调试进程

此时能够衔接板子,确保衔接成功后,即可开端调试。

别的,需求指定调试运转途径。在pro中参加指令。

target.path = /mnt
INSTALLS += target

无rsync东西调试进程

1.点击项目,点击需求装备的构建套件,点击run。删去经过SFTP上传。

嵌入式开发基础环境之搭建Qt嵌入式Linux开发环境

  1. 在增加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}
  1. 最后运转结果

嵌入式开发基础环境之搭建Qt嵌入式Linux开发环境

改定,能够开心的开发,调试,打断点了!!!

最后

嵌入式开发还能够选用另一种经过VsCode进行长途调试的方法。此方法不在此文描述~