【北京迅为】iTOP-4412全能版使用手册-第八十五章 一键烧写QT程序到开发板

news/2025/1/19 18:06:50/

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、陀螺仪、CAN总线、RS485总线、500万摄像头等模块,稳定运行Android 4.0.3/Android 4.4操作,系统通用Linux-3.0.15+Qt操作系统(QT支持5.7版本),Ubuntu版本:12.04,接口智能分配 方便好用。


第八十五章 一键烧写QT程序到开发板

之前我们写好一个程序,都是先交叉编译完,然后在通过nfs/tftp或者其他的方法拷贝到开发板,然后在手动执行,如果我们调试程序很频繁,那我们每次都重新拷贝到开发板,那这样就太麻烦了,有没有方便一点的办法呢,这个就是接下来我们要介绍的一种方法,一键烧写QT程序到开发板,我们只需要在qtcreater上点击一下编译,那么QT程序会自动到开发板上来运行,是不是非常的方便?

85.1 在开发板上移植ssh

要想实现一键烧写,那么我们必须就先要在开发板上移植一个ssh,本次实验我们使用的是busybox文件系统,这个文件系统并不支持ssh,所以我们要先移植一个上去。接下来,我们一起来移植一下。

移植环境:

编译器保持和编译文件系统和QT的编译器一致:

arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

Ubuntu版本:Ubuntu16

(1)移植zlib

从迅为提供的资料中拷贝“ zlib-1.2.3.tar.gz” 到 Ubuntu 系统,使用命令“ tar -vxf zlib-1.2.3.tar.gz” 解压,得到“zlib-1.2.3” 文件夹,使用命令“cd zlib-1.2.3” 进入“ zlib-1.2.3”文件夹,如图 62.6.1.1 

接着使用命令“./configure --prefix=/home/ssh/ssh_install/zlib-1.2.3”,设置配置文件

其中--prefix=/home/ssh/ssh_install/zlib-1.2.3指定了zlib的安装路径。

图 62.6.1.2所示 :

 

使用命令“ vim Makefile” 修改编译参数,将所有 gcc 修改为“ arm-none-linux-gnueabi-gcc”

图 62.6.1.3所示

 

接着使用编译命令“make” ,如图 62.6.1.4所示  

执行 make 无报错后,接着使用安装命令“make install” ,如图 62.6.1.5所示

 

现在已经安装好了 zlib 库,在后面编译 SSH 的时候,需要用到 zlib 库,作者这里的路径是“/home/ssh/ssh_install/zlib-1.2.3” ,后面配置的时候需要对应生成的库文件,如图 62.6.1.6所示  

(2)移植 openssl

接着来移植 openssl 库,拷贝“openssl-0.9.8h.tar.gz” 到 Ubuntu 系统,使用命令“tar -vxf openssl-0.9.8h.tar.gz” 解压,得到“openssl-0.9.8h” 文件夹,使用命令“cd openssl-0.9.8h”进入“openssl-0.9.8h” 文件夹,如图 62.6.1.7所示。

 

接着使用命令“./Configure linux-elf-arm -DB_ENDIAN linux:'arm-none-linux

-gnueabi-gcc' --prefix=/home/ssh/ssh_install/openssl-0.9.8h” 配置编译文件,如图 62.6.1.8所示。

 

使用编译命令“make” 编译完成,如图 62.6.1.9所示  

最后使用安装命令“make install” ,如果在安装过程提示以下错误,如图 62.6.1.10所示: 

执行命令rm -f /usr/bin/pod2man可以解决,如图 62.6.1.11所示: 

 

然后再次执行make install即可安装成功,如图 62.6.1.12所示: 

3)移植 ssh 

接着来移植 openssh, 拷贝“ openssh-4.6p1.tar.gz” 到 Ubuntu 系统,使用命令“ tar -vxfopenssh-4.6p1.tar.gz” 解压,得到“openssh-4.6p1” 文件夹,使用命令“cd openssh-4.6p1/” 进入“openssh-4.6p1” 文件夹,如图 62.6.1.13所示

 

图 62.6.1.13

这里看一下 ssh 的 configure 的帮助文件,如下图所示,使用“ ./configure --help

ssh 的 configure 文件中需要配置的参数
--host 表示编译出来要运行的平台
--with-libs 表示需要的额外的库文件;
--with-zlib 表示库文件 zlib 的 instal 路径 l;
--with-ssl-dir 表示 OpenSSl 文件的 install 路径;
--disable-etc-default-login 表示不使用当前环境变量的编译器, 所以后面配置参数时, 最后直接配置
CC 和 AR 这两个编译器;
CC 表示设置使用的编译器;
AR 表示设置使用的编译器的路径(蛮奇怪, 配置文件中似乎没有这个参数, 用户可以执
行验证下)

接着使用配置命令,命令比较长,作者使用颜色给大家分段:

./configure --host=arm-none-linux --with-libs

--with-zlib=/home/ssh/ssh_install/zlib-1.2.3

--with-ssl-dir=/home/ssh/ssh_install/openssl-0.9.8h

--disable-etc-default-login CC=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc

AR=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-ar 

图 62.6.1.14所示:

执行成功如图 62.6.1.15所示: 

使用编译命令“make” ,编译完成,如图 62.6.1.16所示  

 

编译完成,最后肯定是需要安装到开发板上的,如图 62.6.1.17所示。最后在目录下

“/home/ssh/openssh-4.6p1” 有这几个二进制文件“scp 、 sftp 、 ssh、 sshd、

ssh-add、 ssh-agent、 ssh-keygen、 ssh-keyscan” 需要安装到开发板上。最终编译出来的二进制文件,可以使用 file 命令查看文件属性,如下图所示, 使用命令“file scp” ,可以看到“scp” 文件是 32 位 ARM上使用的可执行文件

 

85.2 安装ssh

我们把之前我们做好的QT的文件系统拷贝到Ubuntu上,然后新建一个名为root的文件夹,在这个文件夹下解压我们拷贝到Ubuntu的QT的文件系统或者将没有打包的文件系统放进去。因为我们要把编译好的ssh安装到文件系统里面。如图 62.6.2.1所示:

 

在解压或者拷贝到的文件系统“/usr/libexec“、 “/usr/local/etc ” 、 “/usr/local/bin ” 三个目录, 使用命令“mkdir -p ./usr/libexec ./usr/local/etc ./usr/local/bin

” ,如图 62.6.2.2所示

 

在虚拟机 Ubuntu 上,将 openssh-6.6p1 下的生成“scp 、 sftp、 ssh、 sshd、 ssh-

add、 ssh-agent、 ssh-keygen、 ssh-keyscan” 可执行文件拷贝到文件系统“/usr/local/bin” 目录下,拷贝完成,如图 62.6.2.3所示

 

将“moduli、 ssh_config、 sshd_config” 拷贝到开发板的“/usr/local/etc” 目录下,

拷贝完成,如图 62.6.2.4所示。

 

将“sftp-server、 ssh-keysign” 拷贝到开发板的“/usr/libexec” 目录下,拷贝完成,如图 62.6.2.5所示   

85.3 生成KEY文件,并安装

使用“ssh-keygen” 生成个四个 key 文件“ssh_host_rsa_key” “ssh_host_dsa_key”

“ssh_host_ecdsa_key” 和“ssh_host_ed25519_key” 。

1 在虚拟机 Ubuntu 控制台, “ /home/ssh/openssh-4.6p1” 目录下, 使用命

令“ssh-keygen -t rsa -f ssh_host_rsa_key -N ""” ,可以生成“ssh_host_rsa_key ” 文件

图 62.6.3.1所示:

 

2 接着使用剩下的三条命令:

ssh-keygen -t dsa -f ssh_host_dsa_key -N ""

ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""

ssh-keygen -t dsa -f ssh_host_ed25519_key -N ""

执行完成之后, 将生成的“ssh_host_rsa_key” “ssh_host_dsa_key” “ssh_host_ecdsa_key” 和

“ssh_host_ed25519_key” 文件, 拷贝到文件系统的“/usr/local/etc/” 目录下, 然后将其权限修改为 600,如图 62.6.3.2所示:

 

然后我们回到文件系统的解压目录,使用tar命令将文件系统打包,如果是其他格式的文件系统,如img,按照具体开发板使用手册的工具打包即可。如图 62.6.3.3所示: 

 

然后我们将打包完的文件系统烧写到开发板。

85.4 修改目标板密钥文件

在文件系统中,使用命令“vi /etc/passwd” ,打开 ssh 密钥文件,在 “/etc/passwd” 文件底行添

加以下内容:

sshd:x:74:74:Privilege-separated

SSH:/var/empty/sshd:/sbin/nologin

添加完成之后,如图 62.6.4.1所示,然后保存,密钥文件修改完成

 

85.5 测试 

保证开发板和虚拟机是可以ping通的前提下,在开发板上新建 root 账户,如图 62.6.5.1所示,使用命令“passwd root” ,它会提示输入密码,需要重复输入两次以防输错

 

然后在开发板上运行 sshd 二进制文件,使用命令“/usr/local/bin/sshd” ,提示如图 62.6.5.2  

 

虽然提示出错了,但是作者实际测试并不影响使用,所以我们先跳过这个错误。

然后使用工具 ssh 测试是否和 PC 联通能否正常通信,我们打开ssh工具,然后输入开发板的IP和用户名,如图 62.6.5.3所示:

 

根据软件的提示输入我们之前设置的密码: 

 

可以发现我们已经成功的连接上了开发板。如图 62.6.5.5所示,这样我们的ssh就移植成功了。 

 

85.6 在Ubuntu上搭建QT开发环境

为了避免由于开发环境的版本差异导致的不必要的问题,推荐用户下载和使用手册中安装的相同版本“qtcreator-3.5.1” 。用户有两种方式可以下载。这里需要注意的是,如果用户想要在上位机上调试, 则需要下载对应环境的插件。我们提供的是“qt-opensource-linux-x64-5.5.1.run” ,里面包含了在 Ubuntu 中运行的插件,也就是编译出来的应用程序,可以在 Ubuntu16.04 中运行。然后经过简单的移植,就可以在开发板上运行。

官网下载地址 http://download.qt.io/archive/qt/5.5/5.5.1/,

  1. 安装qtcreator-3.5.1

我们将qt-opensource-linux-x64-5.5.1.run安装包通过ssh传到Ubuntu的/opt目录里面,如图 62.6.6.1所示:

 

  1. 然后我们在 ubuntu 下打开终端,切换为 root 用户,我们使用命令“chmod 777 qt-opensource-linux-x64-5.5.1.run”修改安装包权限。如图 62.6.6.2所示

 

  1. 接下来使用命令“./qt-opensource-linux-x64-5.5.1.run” 执行安装。如图 62.6.6.3所示

 

  1. 欢迎界面点击“next” 继续。如图 62.6.6.4:

 

  1. 然后到输入账号密码界面,点击“ skip” 跳过。如图 62.6.6.5 

 

  1. 继续点击“ next” 下一步。如图 62.6.6.6

 

然后选择安装路径,我们不用修改(后面我们好多地方会用到这个路径,尽量不要修改),点击“next” 下一步。 

 

接下来我们选择安装的组件,勾选图中几个选项即可,如图 62.6.6.8所示: 

 

  1. 然后选择第一项已同意并阅读条款。 再点击下一步。如图 62.6.6.9 

 

  1. 然后点击“install” 安装 qt,如图 62.6.6.10 

 

  1. 等待装完成,点击“ finish” 结束安装即可。如图 62.6.6.11 

 

  1. 安装完成后我们可以通过“ search your computer” 搜索 qt。如图 62.6.6.12

 

  1. 打开QT之前,我们需要安装一些必要的库文件。
apt-get install libqt4-dev
apt-get install libgstreamer0.10-dev
apt-get install libgstreamer-plugins-base0.10-dev 
  1. 安装好依赖以后,我们打开QTcreator,然后新建一个工程,创建工程的方法和在Windows上使用QTcreator创建的方法一样,这里就不在赘述了。创建一个以后,我们点击一下编译,如果可以编译成功,则说明我们的环境搭建正确,如图 62.6.6.13所示:

 

85.7 配置编译套件

(1)点击菜单栏中的Tools->选择Options,如图 62.6.7.1所示:

 

(2)然后点击Build&Run,选择QT Versions,点击add,如图 62.6.7.2所示 

 

(3)在弹出来的窗口,我们选择编译QT源码生成的qmake,选中以后点击open,如果大家不清楚要怎么编译QT源码,请看交叉编译QT源码章节,如图 62.6.7.3所示: 

 

(4)然后点击Apply,QT版本就设置完成了。 

 

(5)接着我们点击Compilers,点击里面的Add,如图 62.6.7.5所示: 

 

(6)接着我们选择里面的GCC,如图 62.6.7.6所示: 

 

(7)接着我们在Name那些写上arm-linux-gcc,编译器目录选择编译QT5.7源码的编译器里面的g++,然后点击Apply,如图 62.6.7.7所示: 

 

(8)接着来设置gdb,我们点击Debuggers,选择add,然后把Name写上arm-linu-gdb,PATH的路径选择我们编译QT源码的编译器所在的路径,并选择这个编译器的gdb,如图 62.6.7.8所示:然后点击Apply。 

 

(9)然后我们点击Kits,点击里面的add,在弹出的设置界面,我们把Name改成ARM-QT5.7,Compiler选项里面选择我们之前设置arm-linux-g++,Debugger里面选择我们之前设置的arm-linux-gdb,QT version里面选择我们新添加的QT版本QT5.7,如图 62.6.7.9所示: 

 

(10)接着我们把Device type设置成Generic Linux Device,然后点击Device里面的Manage,如图 62.6.7.10所示:

(11)然后在弹出来的界面我们点击add,选择Generic Linux Device,选择完成以后点击Start Wizard,如图 62.6.7.11所示: 

 

(12)在弹出来的界面我们把IP设置成开发板的IP,username设置成root,密码设置成我们在移植ssh里面设置的密码,然后点击next,如图 62.6.7.12所示: 

 

(13)在弹出来的界面,我们点击finish,如图出现成功的字样,则说明已经设置成功,如果不成功,请检查使用ssh软件是不是可以跟开发板连接,还有上一步的设置是不是正确的。如图 62.6.7.13所示: 

 

(14)点击ok,退出编译器设置界面,如图 62.6.7.14所示: 

 

(15)然后我们点击qtcreator里面的Projects,把编译器切换成我们的刚才设置的编译器,如图 62.6.7.15所示: 

 

(16)然后我们打开在我们要编译的QT代码的pro文件里面添加以下代码, 

这俩行代码的意思是说把我们的可执行程序下载到开发板的/opt目录下并执行。

target.path=/opt

INSTALLS+=target

图 62.6.7.16所示:

 

(17)然后取消掉构建的路径,接在我们点击一下编译,可以在我们的开发板的屏幕上看到我们QT程序直接在开发板运行了, 

 


http://www.ppmy.cn/news/1564474.html

相关文章

开源数据同步中间件(Dbsyncer)简单玩一下 mysql to mysql 的增量,全量配置

一、什么是Dbsyncer 1、介绍 Dbsyncer是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景,支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警…

Mac 使用 GVM 管理多版本 Go 环境

使用 GVM 管理多版本 Go 环境 在本文中,我们将使用 gvm(Go Version Manager)工具管理本地多个 Go 语言版本。gvm 功能类似于 Python 的 Anaconda,可以方便地切换不同版本的 Go 环境,非常适合需要多版本开发与测试的场…

查看电脑或笔记本CPU的核心数方法及CPU详细信息

一、通过任务管理器查看 1.打开任务管理器 可以按下“Ctrl Shift Esc”组合键,或者按下“Ctrl Alt Delete”组合键后选择“任务管理器”来打开。 2.查看CPU信息 在任务管理器界面中,点击“性能”标签页,找到CPU使用记录区域&#xff0c…

通过将模型权重的矩阵表示为低秩矩阵,可以减少需要调整的参数数量,通俗易懂的解释,不懂你爬网线打我

通过将模型权重矩阵表示为低秩矩阵,可以减少需要调整的参数数量,原因在于低秩矩阵的结构本身就比高秩矩阵更“紧凑”,即它们需要的独立参数更少。具体来说,低秩矩阵的结构可以通过减少模型的自由度(独立参数的数量&…

Starrocks 存算分离 VS Trino 性能测试

Starrocks 存算分离 VS Trino 性能测试 集群规模 Starrocks :存算分离 ON HDFS;8C 48G * 4 个 compute_nodes 1 个 FE 节点 4C8G;开启 datacacheTrino : 13C 60G * 56 WORKER ; 整个公司公用,测试时负载较低; 测试结果记录 公…

Micrometer+Zipkin 分布式链路追踪

MicrometerZipkin 分布式链路追踪(Distributed Tracing)是一种用于监控和分析分布式系统性能的技术。它允许开发人员和运维人员追踪请求在分布式系统中的传播路径,包括跨服务调用、数据库访问、缓存查询等操作。通过分布式链路追踪&#xff0…

重学SpringBoot3-WebClient配置与使用详解

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞??收藏评论 重学SpringBoot3-WebClient配置与使用详解 1. 简介2. 环境准备 2.1 依赖配置 3. WebClient配置 3.1 基础配置3.2 高级配置3.3 retrieve()和exchange()区别 4. 使用示例 4.1 基本请求操…

云计算技术深度解析与代码实践

云计算技术深度解析与代码实践 引言 云计算作为近年来兴起的革命性IT服务模式,正在全球范围内迅速普及。它通过网络将软硬件资源整合成一个高效的分布式系统,实现了数据的可靠存储和高效处理。本文将深入探讨云计算的技术特点、应用场景,并…