|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
之前我们写好一个程序,都是先交叉编译完,然后在通过 nfs/tftp 或者其他的方法拷贝到开发板,然后在手动执行,如果我们调试程序很频繁,那我们每次都重新拷贝到开发板,那这样就太麻烦了,有没有方便一点的办法呢,这个就是接下来我们要介绍的一种方法,一键烧写 QT 程序到开发板,我们只需要在qtcreater 上点击一下编译,那么 QT 程序会自动到开发板上来运行,是不是非常的方便?
: a' P2 u/ M) [: P( B' j) J! s85.1 在开发板上移植 ssh# \+ t/ ~7 \ I6 R7 U4 B
要想实现一键烧写,那么我们必须就先要在开发板上移植一个 ssh,本次实验我们使用的是 busybox 文件系统,这个文件系统并不支持 ssh,所以我们要先移植一个上去。接下来,我们一起来移植一下。- t( L. O! Z7 O( H/ y: g
移植环境:
" D- d, p2 d/ x编译器保持和编译文件系统和 QT 的编译器一致:' I; c6 j5 O1 N7 L+ \
ARM-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
+ B4 u* M1 y, JUbuntu 版本:Ubuntu161 b$ S& W% L& w o6 j5 }
(1)移植 zlib
6 ^, w" W) F' f. M( R1 o从迅为提供的资料中拷贝“ 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
i1 G, s' J& {: s' b5 B: e 2 ^% z$ `6 b! t. E- K0 J( ~
接着使用命令“./configure --prefix=/home/ssh/ssh_install/zlib-1.2.3”,设置配置文件,6 P) w# R% f2 N# c, ~7 {$ g* R0 l# C9 G
其中--prefix=/home/ssh/ssh_install/zlib-1.2.3 指定了 zlib 的安装路径。
* h8 `4 `7 }& e/ ^如图 62.6.1.2 所示 :% v3 i; ]1 r; G0 o+ F( ]1 q1 ]# R
# V( N" C1 q( O! [9 f
使用命令“ vim Makefile” 修改编译参数,将所有 gcc 修改为“ arm-none-linux-gnueabi-gcc”如图 62.6.1.3 所示
$ |, N8 {. D3 `1 S0 _ E * l' t" [- C+ B/ _
接着使用编译命令“make” ,如图 62.6.1.4 所示, Q8 K' z. _4 l( [ j
![]()
. Y( H! v1 _8 C执行 make 无报错后,接着使用安装命令“make install” ,如图 62.6.1.5 所示
" C' p, t6 X* A: Y( ~3 q 9 H9 J8 ]- n9 X4 K3 u" ~( T( R
现在已经安装好了 zlib 库,在后面编译 SSH 的时候,需要用到 zlib 库,作者这里的路径是“/home/ssh/ssh_install/zlib-1.2.3” ,后面配置的时候需要对应生成的库文件,如图 62.6.1.6 所示
: C+ W9 M/ M1 \% R6 O* J& Z: Y2 w 8 N8 l: F0 S6 c- j! d
(2)移植 openssl, }6 B5 I0 q% d" R) o: |: u/ J, 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 所示。
' w: H/ Z3 R, }) k+ I G4 s$ ?![]()
" f4 t1 r2 A; B# H. l! D接着使用命令“./Configure linux-elf-arm -DB_ENDIAN linux:'arm-none-linux
/ K2 S9 O/ N1 j9 b$ U8 I5 P-gnueabi-gcc' --prefix=/home/ssh/ssh_install/openssl-0.9.8h” 配置编译文件,如图 62.6.1.8 所示。: c+ f! U' q2 T1 e
![]()
8 \& U$ Q/ A- u# d使用编译命令“make” 编译完成,如图 62.6.1.9 所示
$ [* z( t# z8 S* z2 _5 R 2 I3 a; u. A2 O0 x7 ]9 ^
最后使用安装命令“make install” ,如果在安装过程提示以下错误,如图 62.6.1.10 所示:
y! r; H3 }/ [, p![]()
. N, q+ K/ B5 q, u- Y执行命令 rm -f /usr/bin/pod2man 可以解决,如图 62.6.1.11 所示:
& I! y7 a- A5 ~! J![]()
/ ^+ f) G m( S& @) B) F# ?5 T然后再次执行 make install 即可安装成功,如图 62.6.1.12 所示:# {: p8 n- D8 Y- W+ K
![]()
$ z0 H8 h% q/ ~(3)移植 ssh: e: m- ]/ O5 ?5 W4 ?6 N8 C
接着来移植 openssh, 拷贝“ openssh-4.6p1.tar.gz” 到 Ubuntu 系统,使用命令“ tar
R, N6 q; x9 Q+ d1 Y/ Y' h-vxfopenssh-4.6p1.tar.gz” 解压,得到“openssh-4.6p1” 文件夹,使用命令“cd openssh-4.6p1/” 进入“openssh-4.6p1” 文件夹,如图 62.6.1.13 所示4 a$ h7 y# I# j# h% d9 t
2 A$ |4 |- [6 f# E8 p
这里看一下 ssh 的 configure 的帮助文件,如下图所示,使用“ ./configure --help
! ~; b! ^* r! ?$ _4 W% C5 m s# pssh 的 configure 文件中需要配置的参数
4 ?' B% l$ P9 \3 Q: p; z--host 表示编译出来要运行的平台' q% O* A/ b3 w [2 v
--with-libs 表示需要的额外的库文件;
6 W( ~: w7 I* t/ Z--with-zlib 表示库文件 zlib 的 instal 路径 l;
& J0 ~: Y9 \2 i" D1 B9 U--with-ssl-dir 表示 OpenSSl 文件的 install 路径;. v0 J$ w* U5 q8 |+ d, m
--disable-etc-default-login 表示不使用当前环境变量的编译器, 所以后面配置参数时, 最后直接配置
4 E+ P: ^* S7 ~5 z; n# {3 c3 lCC 和 AR 这两个编译器;/ h* Z6 W8 G7 `! G9 S4 A/ ]2 n
CC 表示设置使用的编译器;! Y% i- U- ^8 K+ P: S
AR 表示设置使用的编译器的路径(蛮奇怪, 配置文件中似乎没有这个参数, 用户可以执- t; ?# K7 }7 f: f9 I
行验证下) R4 h, C: K0 }' z4 o7 ]
接着使用配置命令,命令比较长,作者使用颜色给大家分段:
, ~5 d: Y7 N7 S+ m0 x: G& s./configure --host=arm-none-linux --with-libs
% S2 X$ P) Y+ e* d$ e--with-zlib=/home/ssh/ssh_install/zlib-1.2.3/ u' e+ `2 o9 N) ]
--with-ssl-dir=/home/ssh/ssh_install/openssl-0.9.8h
* ]; Z, h5 h' t" h--disable-etc-default-login CC=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc' c3 j2 \# ?' X- V4 ]! S
AR=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-ar, r5 ~ b1 N" f: x
如图 62.6.1.14 所示:- r! |4 Q$ B- ?6 U1 ]3 ~ q
![]()
! p% ^/ ?- ^' C. u; s7 d$ e( G执行成功如图 62.6.1.15 所示:2 T" u. `* q$ U
![]()
/ c' y' e) y( _" Y) Z* M使用编译命令“make” ,编译完成,如图 62.6.1.16 所示
7 x; \. T+ Y1 e8 `5 ]# _% I8 @ {![]()
# j0 l0 A5 [$ D0 g$ U; S编译完成,最后肯定是需要安装到开发板上的,如图 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上使用的可执行文件
: r+ W( r( k+ O' _4 B! G![]()
# Z8 e1 p: U# O S n- I- v9 U |
|