#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板


文章目录

    • 1 在开发板上移植ssh
    • 2 安装ssh
    • 3 生成KEY文件,并安装
    • 4 修改目标板密钥文件
    • 5 测试
    • 6 在Ubuntu上搭建QT开发环境
    • 7 配置编译套件

之前我们写好一个程序,都是先交叉编译完,然后在通过nfs/tftp或者其他的方法拷贝到开发板,然后在手动执行,如果我们调试程序很频繁,那我们每次都重新拷贝到开发板,那这样就太麻烦了,有没有方便一点的办法呢,这个就是接下来我们要介绍的一种方法,一键烧写QT程序到开发板,我们只需要在qtcreater上点击一下编译,那么QT程序会自动到开发板上来运行,是不是非常的方便?
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”文件夹,如图 1.1
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.1 接着使用命令“./configure --prefix=/home/ssh/ssh_install/zlib-1.2.3”,设置配置文件,
其中–prefix=/home/ssh/ssh_install/zlib-1.2.3指定了zlib的安装路径。
如图 1.2所示 :
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.2 使用命令“ vim Makefile” 修改编译参数,将所有 gcc 修改为“ arm-none-linux-gnueabi-gcc”
如图 62.6.1.3所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.3 接着使用编译命令“make” ,如图 1.4所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.4 执行 make 无报错后,接着使用安装命令“make install” ,如图 1.5所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.5 现在已经安装好了 zlib 库,在后面编译 SSH 的时候,需要用到 zlib 库,作者这里的路径是“/home/ssh/ssh_install/zlib-1.2.3” ,后面配置的时候需要对应生成的库文件,如图 1.6所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 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” 文件夹,如图 1.7所示。
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.7 接着使用命令“./Configure linux-elf-arm -DB_ENDIAN linux:‘arm-none-linux
-gnueabi-gcc’ --prefix=/home/ssh/ssh_install/openssl-0.9.8h” 配置编译文件,如图 1.8所示。
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.8 使用编译命令“make” 编译完成,如图 1.9所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.9 最后使用安装命令“make install” ,如果在安装过程提示以下错误,如图 1.10所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.10 执行命令rm -f /usr/bin/pod2man可以解决,如图 1.11所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.11 然后再次执行make install即可安装成功,如图 1.12所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 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” 文件夹,如图 1.13所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 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

如图 1.14所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.14 执行成功如图 1.15所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.15 使用编译命令“make” ,编译完成,如图 1.16所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.16 编译完成,最后肯定是需要安装到开发板上的,如图 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上使用的可执行文件
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 1.17 2 安装ssh 我们把之前我们做好的QT的文件系统拷贝到Ubuntu上,然后新建一个名为root的文件夹,在这个文件夹下解压我们拷贝到Ubuntu的QT的文件系统或者将没有打包的文件系统放进去。因为我们要把编译好的ssh安装到文件系统里面。如图 2.1所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 2.1 在解压或者拷贝到的文件系统“/usr/libexec“、 “/usr/local/etc ” 、 “/usr/local/bin ” 三个目录, 使用命令“mkdir -p ./usr/libexec ./usr/local/etc ./usr/local/bin
” ,如图 2.2所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 2.2 在虚拟机 Ubuntu 上,将 openssh-6.6p1 下的生成“scp 、 sftp、 ssh、 sshd、 ssh-
add、 ssh-agent、 ssh-keygen、 ssh-keyscan” 可执行文件拷贝到文件系统“/usr/local/bin” 目录下,拷贝完成,如图 2.3所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 2.3 将“moduli、 ssh_config、 sshd_config” 拷贝到开发板的“/usr/local/etc” 目录下,
拷贝完成,如图 2.4所示。
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 2.4 将“sftp-server、 ssh-keysign” 拷贝到开发板的“/usr/libexec” 目录下,拷贝完成,如图 2.5所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 2.5 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 ” 文件
如图 3.1所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 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,如图 3.2所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 3.2 然后我们回到文件系统的解压目录,使用tar命令将文件系统打包,如果是其他格式的文件系统,如img,按照具体开发板使用手册的工具打包即可。如图 3.3所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 3.3 然后我们将打包完的文件系统烧写到开发板。
4 修改目标板密钥文件 在文件系统中,使用命令“vi /etc/passwd” ,打开 ssh 密钥文件,在 “/etc/passwd” 文件底行添
加以下内容:
sshd?74:74:Privilege-separated
SSH:/var/empty/sshd:/sbin/nologin
添加完成之后,如图 4.1所示,然后保存,密钥文件修改完成
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 4.1 5 测试 保证开发板和虚拟机是可以ping通的前提下,在开发板上新建 root 账户,如图 5.1所示,使用命令“passwd root” ,它会提示输入密码,需要重复输入两次以防输错
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 5.1 然后在开发板上运行 sshd 二进制文件,使用命令“/usr/local/bin/sshd” ,提示如图 5.2
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 5.2 虽然提示出错了,但是作者实际测试并不影响使用,所以我们先跳过这个错误。
然后使用工具 ssh 测试是否和 PC 联通能否正常通信,我们打开ssh工具,然后输入开发板的IP和用户名,如图 5.3所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 5.3 根据软件的提示输入我们之前设置的密码:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 5.4 可以发现我们已经成功的连接上了开发板。如图 5.5所示,这样我们的ssh就移植成功了。
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 5.5 6 在Ubuntu上搭建QT开发环境 为了避免由于开发环境的版本差异导致的不必要的问题,推荐用户下载和使用手册中安装的相同版本“qtcreator-3.5.1” 。用户有两种方式可以下载。这里需要注意的是,如果用户想要在上位机上调试, 则需要下载对应环境的插件。我们提供的是“qt-opensource-linux-x64-5.5.1.run” ,里面包含了在 Ubuntu 中运行的插件,也就是编译出来的应用程序,可以在 Ubuntu16.04.6 中运行。然后经过简单的移植,就可以在开发板上运行。
官网下载地址 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所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.1 (2)然后我们在 ubuntu 下打开终端,切换为 root 用户,我们使用命令“chmod 777 qt-opensource-linux-x64-5.5.1.run”修改安装包权限。如图 6.2所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.2 (3)接下来使用命令“./qt-opensource-linux-x64-5.5.1.run” 执行安装。如图 6.3所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.3 (4)欢迎界面点击“next” 继续。如图 6.4:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.4 (5)然后到输入账号密码界面,点击“ skip” 跳过。如图 6.5
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.5 (6)继续点击“ next” 下一步。如图 6.6:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.6 (7)然后选择安装路径,我们不用修改(后面我们好多地方会用到这个路径,尽量不要修改),点击“next” 下一步。
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.7 (8)接下来我们选择安装的组件,勾选图中几个选项即可,如图 6.8所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.8 【#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板】(9)然后选择第一项已同意并阅读条款。 再点击下一步。如图 6.9
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.9 (10)然后点击“install” 安装 qt,如图 6.10
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.10 (11)等待装完成,点击“ finish” 结束安装即可。如图 6.11
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.11 (12)安装完成后我们可以通过“ search your computer” 搜索 qt。如图 6.12
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.12 (13)打开QT之前,我们需要安装一些必要的库文件。
apt-get install libqt4-dev apt-get install libgstreamer0.10-dev apt-get install libgstreamer-plugins-base0.10-dev

(14)安装好依赖以后,我们打开QTcreator,然后新建一个工程,创建工程的方法和在Windows上使用QTcreator创建的方法一样,这里就不在赘述了。创建一个以后,我们点击一下编译,如果可以编译成功,则说明我们的环境搭建正确,如图 6.13所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 6.13 7 配置编译套件 (1)点击菜单栏中的Tools->选择Options,如图 7.1所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.1 (2)然后点击Build&Run,选择QT Versions,点击add,如图 7.2所示
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.2 (3)在弹出来的窗口,我们选择编译QT源码生成的qmake,选中以后点击open,如果大家不清楚要怎么编译QT源码,请看交叉编译QT源码章节,如图 7.3所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.3 (4)然后点击Apply,QT版本就设置完成了。
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.4 (5)接着我们点击Compilers,点击里面的Add,如图 7.5所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.5 (6)接着我们选择里面的GCC,如图 7.6所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.6 (7)接着我们在Name那些写上arm-linux-gcc,编译器目录选择编译QT5.7源码的编译器里面的g++,然后点击Apply,如图 7.7所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.7 (8)接着来设置gdb,我们点击Debuggers,选择add,然后把Name写上arm-linu-gdb,PATH的路径选择我们编译QT源码的编译器所在的路径,并选择这个编译器的gdb,如图 7.8所示:然后点击Apply。
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.8 (9)然后我们点击Kits,点击里面的add,在弹出的设置界面,我们把Name改成ARM-QT5.7,Compiler选项里面选择我们之前设置arm-linux-g++,Debugger里面选择我们之前设置的arm-linux-gdb,QT version里面选择我们新添加的QT版本QT5.7,如图 7.9所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.9 (10)接着我们把Device type设置成Generic Linux Device,然后点击Device里面的Manage,如图 7.10所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.10 (11)然后在弹出来的界面我们点击add,选择Generic Linux Device,选择完成以后点击Start Wizard,如图 7.11所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.11 (12)在弹出来的界面我们把IP设置成开发板的IP,username设置成root,密码设置成我们在移植ssh里面设置的密码,然后点击next,如图 7.12所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.12 (13)在弹出来的界面,我们点击finish,如图出现成功的字样,则说明已经设置成功,如果不成功,请检查使用ssh软件是不是可以跟开发板连接,还有上一步的设置是不是正确的。如图 7.13所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.13 (14)点击ok,退出编译器设置界面,如图 7.14所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.14 (15)然后我们点击qtcreator里面的Projects,把编译器切换成我们的刚才设置的编译器,如图 7.15所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.15 (16)然后我们打开在我们要编译的QT代码的pro文件里面添加以下代码,
这俩行代码的意思是说把我们的可执行程序下载到开发板的/opt目录下并执行。
target.path=/opt INSTALLS+=target

如图 7.16所示:
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.16 (17)然后取消掉构建的路径,接在我们点击一下编译,可以在我们的开发板的屏幕上看到我们QT程序直接在开发板运行了,
#|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

图 7.17 #|i.MX6ULL终结者QT应用开发一键烧写QT程序到开发板
文章图片

    推荐阅读