|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
之前我们写好一个程序,都是先交叉编译完,然后在通过 nfs/tftp 或者其他的方法拷贝到开发板,然后在手动执行,如果我们调试程序很频繁,那我们每次都重新拷贝到开发板,那这样就太麻烦了,有没有方便一点的办法呢,这个就是接下来我们要介绍的一种方法,一键烧写 QT 程序到开发板,我们只需要在qtcreater 上点击一下编译,那么 QT 程序会自动到开发板上来运行,是不是非常的方便?! n$ J# z G' v
85.1 在开发板上移植 ssh7 r: b, ]# z3 r4 `" I/ z
要想实现一键烧写,那么我们必须就先要在开发板上移植一个 ssh,本次实验我们使用的是 busybox 文件系统,这个文件系统并不支持 ssh,所以我们要先移植一个上去。接下来,我们一起来移植一下。
- Q6 y" B1 J4 B# n( X: @ x: _移植环境:! ^4 ^4 o* l) X+ B- L
编译器保持和编译文件系统和 QT 的编译器一致:- U9 Q+ A3 u* @4 \
ARM-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz23 U3 A3 z! z* i5 A
Ubuntu 版本:Ubuntu16
" Q" R% D" I' W, l; g(1)移植 zlib- {" i* [6 k% r6 j* e
从迅为提供的资料中拷贝“ 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.14 W( h- ^: V8 X6 x
![]()
, h, i3 Q7 X; S/ o$ @7 J接着使用命令“./configure --prefix=/home/ssh/ssh_install/zlib-1.2.3”,设置配置文件,
7 F# o4 [5 N. {3 R% u其中--prefix=/home/ssh/ssh_install/zlib-1.2.3 指定了 zlib 的安装路径。3 x1 K, [7 R) ~" y
如图 62.6.1.2 所示 :
1 X# R. ^0 q$ _) F * K% C; I9 u% h8 d S! v
使用命令“ vim Makefile” 修改编译参数,将所有 gcc 修改为“ arm-none-linux-gnueabi-gcc”如图 62.6.1.3 所示
) Y5 ^8 c3 ~/ E0 x% c* m * T! N( d# i1 X) B$ P
接着使用编译命令“make” ,如图 62.6.1.4 所示
: G! b: U6 P; H2 L; Q . P* |6 L7 U5 |1 T
执行 make 无报错后,接着使用安装命令“make install” ,如图 62.6.1.5 所示
4 h0 i! e" p8 z6 c" U % ~$ }, E y/ p6 o- H# w
现在已经安装好了 zlib 库,在后面编译 SSH 的时候,需要用到 zlib 库,作者这里的路径是“/home/ssh/ssh_install/zlib-1.2.3” ,后面配置的时候需要对应生成的库文件,如图 62.6.1.6 所示+ e; X0 ?, H5 U7 o) ?4 Y" W
![]()
' R! E) O3 [' A$ ](2)移植 openssl
7 a& G: `- d5 R3 G' e# P接着来移植 openssl 库,拷贝“openssl-0.9.8h.tar.gz” 到 Ubuntu 系统,使用命令“tar -vxfopenssl-0.9.8h.tar.gz”解压,得到“openssl-0.9.8h”文件夹,使用命令“cd openssl-0.9.8h”进入“openssl-0.9.8h”文件夹,如图 62.6.1.7 所示。9 r6 `1 Q- |/ }; w! m
8 m4 U- s, m% o
接着使用命令“./Configure linux-elf-arm -DB_ENDIAN linux:'arm-none-linux1 M" L5 |# G+ C+ Z/ x2 k: T9 ~
-gnueabi-gcc' --prefix=/home/ssh/ssh_install/openssl-0.9.8h” 配置编译文件,如图 62.6.1.8 所示。2 A6 M7 T' `! D0 u
+ H' h! v2 A& |1 b
使用编译命令“make” 编译完成,如图 62.6.1.9 所示
+ g- `+ ]$ X9 Z% { R( U [7 [" Z5 Y( G: Z' p
最后使用安装命令“make install” ,如果在安装过程提示以下错误,如图 62.6.1.10 所示:- t6 ^) n; m2 v0 w3 h! V
![]()
. M8 V% N% G x+ A0 B0 q: F( H执行命令 rm -f /usr/bin/pod2man 可以解决,如图 62.6.1.11 所示:
, \' b3 V7 W4 D 1 _# | V/ ?+ n2 d2 P4 ~
然后再次执行 make install 即可安装成功,如图 62.6.1.12 所示:
7 X4 z) y5 t8 H6 f5 I i& g, ?![]()
: |8 n, \, ?7 @ ]" M8 e$ P(3)移植 ssh1 o% b G( o& G6 A1 N! E0 [
接着来移植 openssh, 拷贝“ openssh-4.6p1.tar.gz” 到 Ubuntu 系统,使用命令“ tar
$ r4 F. k' l3 Q; a' I-vxfopenssh-4.6p1.tar.gz” 解压,得到“openssh-4.6p1” 文件夹,使用命令“cd openssh-4.6p1/” 进入“openssh-4.6p1” 文件夹,如图 62.6.1.13 所示) p G) H, d+ V1 n$ e( d
![]()
$ ^$ V! s9 d! j" o这里看一下 ssh 的 configure 的帮助文件,如下图所示,使用“ ./configure --help
6 g! z1 x2 g5 V) g; Y3 I. Ossh 的 configure 文件中需要配置的参数
' P* A2 v. u* r& V--host 表示编译出来要运行的平台& U+ A' J. }: n; Y* m( c, B
--with-libs 表示需要的额外的库文件;
: P( R& b* @% _& @3 u D+ V--with-zlib 表示库文件 zlib 的 instal 路径 l;
/ B2 s* {$ Y7 U7 T8 T0 Z6 x--with-ssl-dir 表示 OpenSSl 文件的 install 路径;
- h, K0 Y" F9 U7 P: W7 J--disable-etc-default-login 表示不使用当前环境变量的编译器, 所以后面配置参数时, 最后直接配置
8 b! q/ U# X) VCC 和 AR 这两个编译器;+ I) l" O2 }" }
CC 表示设置使用的编译器;- a) C; }" m) s8 @9 p# C6 Q& _1 ~
AR 表示设置使用的编译器的路径(蛮奇怪, 配置文件中似乎没有这个参数, 用户可以执+ K5 _1 d/ f5 U! y5 _: K
行验证下)% V* ?/ \3 ]/ }$ L
接着使用配置命令,命令比较长,作者使用颜色给大家分段:9 s4 K- l6 ?3 q/ f- j% [
./configure --host=arm-none-linux --with-libs
6 r8 p8 T8 |7 H8 R/ K9 l--with-zlib=/home/ssh/ssh_install/zlib-1.2.3
8 W; `1 z* m/ L# P% \--with-ssl-dir=/home/ssh/ssh_install/openssl-0.9.8h" z( ?# l- R; \: n
--disable-etc-default-login CC=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc
, g! U- I; E7 o; D/ s; `AR=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-ar) V9 P( R/ c4 V1 u+ P
如图 62.6.1.14 所示:6 S% H$ S b5 B: T4 v9 c
0 q G: f* R5 {( m9 p0 D1 `9 I
执行成功如图 62.6.1.15 所示:0 l5 \, O& T' `- y5 c5 m
![]()
5 t' L4 V8 ?" R6 N使用编译命令“make” ,编译完成,如图 62.6.1.16 所示: B- L9 C, g1 O! M
0 R" P- Z. g* x' C H
编译完成,最后肯定是需要安装到开发板上的,如图 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上使用的可执行文件
6 u" L; i* b: c$ M0 v1 C![]()
4 {3 r8 u9 b9 p# d |
|