|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
之前我们写好一个程序,都是先交叉编译完,然后在通过 nfs/tftp 或者其他的方法拷贝到开发板,然后在手动执行,如果我们调试程序很频繁,那我们每次都重新拷贝到开发板,那这样就太麻烦了,有没有方便一点的办法呢,这个就是接下来我们要介绍的一种方法,一键烧写 QT 程序到开发板,我们只需要在qtcreater 上点击一下编译,那么 QT 程序会自动到开发板上来运行,是不是非常的方便?
, {+ _ _ Y& _( Q9 ]. t85.1 在开发板上移植 ssh
) H1 ^ Q9 b4 W! o: t要想实现一键烧写,那么我们必须就先要在开发板上移植一个 ssh,本次实验我们使用的是 busybox 文件系统,这个文件系统并不支持 ssh,所以我们要先移植一个上去。接下来,我们一起来移植一下。* I- ~) g2 E5 T
移植环境:
$ w6 @7 z" k: u* i0 K编译器保持和编译文件系统和 QT 的编译器一致:7 _) |; Q# o+ I+ U
ARM-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2' x, o. @; e) v/ \
Ubuntu 版本:Ubuntu16
9 E- D/ T+ r+ o( c8 B(1)移植 zlib
$ N$ G" G5 z( U6 Y9 ^4 L从迅为提供的资料中拷贝“ 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/ y5 I4 m0 m+ h9 P5 R! n
![]()
( F6 A x. P- [( j接着使用命令“./configure --prefix=/home/ssh/ssh_install/zlib-1.2.3”,设置配置文件,- i5 b$ G( W5 `1 s( D4 f
其中--prefix=/home/ssh/ssh_install/zlib-1.2.3 指定了 zlib 的安装路径。
4 j+ a) x6 w* ]" H如图 62.6.1.2 所示 :/ F. j: X* I7 ?: o$ B- O) w# m# r
L& b/ D5 ^. s, _: B1 l5 ^
使用命令“ vim Makefile” 修改编译参数,将所有 gcc 修改为“ arm-none-linux-gnueabi-gcc”如图 62.6.1.3 所示8 v6 }" {% e* c. A. X' o
( Q; j- O* B' Q: f! _; M: i
接着使用编译命令“make” ,如图 62.6.1.4 所示
- I- E) }( ?( A b7 x 3 x+ J, ?. k1 i( C
执行 make 无报错后,接着使用安装命令“make install” ,如图 62.6.1.5 所示
7 b3 `& ~$ f) q 1 w1 E. |- u: _8 H: X/ S
现在已经安装好了 zlib 库,在后面编译 SSH 的时候,需要用到 zlib 库,作者这里的路径是“/home/ssh/ssh_install/zlib-1.2.3” ,后面配置的时候需要对应生成的库文件,如图 62.6.1.6 所示
2 V0 R, q" v$ `9 D- A2 q![]()
) k4 V' s- r+ D, @" E) c(2)移植 openssl: G" E/ l- z9 U$ E ]2 _7 x6 r$ n( j
接着来移植 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 所示。: V! T/ a) t) i. k3 K6 @
: C9 ^8 R, _0 ~: ~9 O1 F0 G6 i- ?
接着使用命令“./Configure linux-elf-arm -DB_ENDIAN linux:'arm-none-linux- M ?$ m3 X- ?2 B
-gnueabi-gcc' --prefix=/home/ssh/ssh_install/openssl-0.9.8h” 配置编译文件,如图 62.6.1.8 所示。
r6 t. P/ ?7 a5 o$ Z![]()
# Z& x" Q9 {( `3 j3 _使用编译命令“make” 编译完成,如图 62.6.1.9 所示
* K2 v9 h( ~! \" C& L3 W2 V, q- S* [![]()
- o6 h* V& D2 x+ T. }& Q% }最后使用安装命令“make install” ,如果在安装过程提示以下错误,如图 62.6.1.10 所示:3 C7 d* N3 g: x; d. f7 Z1 Y& [
* g0 f2 D, v9 R$ b2 ^3 N% I
执行命令 rm -f /usr/bin/pod2man 可以解决,如图 62.6.1.11 所示:; m6 j% A3 Z1 z' t3 b; X. l
6 }' a4 x" u4 m! Y. u V0 q r7 o( R
然后再次执行 make install 即可安装成功,如图 62.6.1.12 所示:
! l9 C; W) L5 O; a" K. \: ], z 3 K0 P6 v, Y& k/ j Q9 H
(3)移植 ssh
/ M- n$ R4 O' w" x接着来移植 openssh, 拷贝“ openssh-4.6p1.tar.gz” 到 Ubuntu 系统,使用命令“ tar
. t( B/ l$ D [0 y, L% y1 N! Y-vxfopenssh-4.6p1.tar.gz” 解压,得到“openssh-4.6p1” 文件夹,使用命令“cd openssh-4.6p1/” 进入“openssh-4.6p1” 文件夹,如图 62.6.1.13 所示
' r4 X- v) m# ^% ~6 ^ 5 V* R' u) ~0 Z9 C1 g
这里看一下 ssh 的 configure 的帮助文件,如下图所示,使用“ ./configure --help
4 Q' w2 q: s8 P' a# a3 D* wssh 的 configure 文件中需要配置的参数, e8 a) \8 F }; l
--host 表示编译出来要运行的平台
+ U) m& K5 c5 Y. y--with-libs 表示需要的额外的库文件;
: y9 |' s7 [$ u( l--with-zlib 表示库文件 zlib 的 instal 路径 l;* k1 j/ f9 R& F
--with-ssl-dir 表示 OpenSSl 文件的 install 路径;% z" a2 r# o7 f% k& x
--disable-etc-default-login 表示不使用当前环境变量的编译器, 所以后面配置参数时, 最后直接配置
3 V# ^9 \, c0 m4 `/ R BCC 和 AR 这两个编译器;
- }( ^: \* A& n, {7 J# c* ], kCC 表示设置使用的编译器;
" u6 S8 T8 k5 _' l" t' u) U6 RAR 表示设置使用的编译器的路径(蛮奇怪, 配置文件中似乎没有这个参数, 用户可以执0 Y% l. }+ Y. s1 U) L% f: }
行验证下)2 E( w' h5 [1 X% X3 Z B- e
接着使用配置命令,命令比较长,作者使用颜色给大家分段:) _6 [( U" k: \ U; c6 q
./configure --host=arm-none-linux --with-libs( K5 U+ N7 G' C/ J8 }$ a/ M
--with-zlib=/home/ssh/ssh_install/zlib-1.2.3: F% O( ?) w# Q3 m
--with-ssl-dir=/home/ssh/ssh_install/openssl-0.9.8h3 m, S3 L+ Q0 T# J
--disable-etc-default-login CC=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc
" K4 _9 Z1 V, t& P- YAR=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-ar
* K1 v7 X+ f- ~/ I* y h$ V如图 62.6.1.14 所示:2 R: e2 h- l6 X4 R, I( @
/ p) w( b# ^& x" Q& m
执行成功如图 62.6.1.15 所示:
: V8 z/ e8 P4 Q6 F . @, k+ t; y+ n6 S7 j
使用编译命令“make” ,编译完成,如图 62.6.1.16 所示3 Z' z1 @! M. c
6 k9 S+ i; v* s2 m, l
编译完成,最后肯定是需要安装到开发板上的,如图 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 v" @% z# x+ ~, U
% B9 U |. [ |3 N( B2 Q
|
|