|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
之前我们写好一个程序,都是先交叉编译完,然后在通过 nfs/tftp 或者其他的方法拷贝到开发板,然后在手动执行,如果我们调试程序很频繁,那我们每次都重新拷贝到开发板,那这样就太麻烦了,有没有方便一点的办法呢,这个就是接下来我们要介绍的一种方法,一键烧写 QT 程序到开发板,我们只需要在qtcreater 上点击一下编译,那么 QT 程序会自动到开发板上来运行,是不是非常的方便?7 Y, ]- W/ z+ b
85.1 在开发板上移植 ssh: U6 d$ P- a( e% u" d' P& _
要想实现一键烧写,那么我们必须就先要在开发板上移植一个 ssh,本次实验我们使用的是 busybox 文件系统,这个文件系统并不支持 ssh,所以我们要先移植一个上去。接下来,我们一起来移植一下。
! _9 g9 ]' k4 v( w移植环境:' Q; e; v& A: E7 @+ k
编译器保持和编译文件系统和 QT 的编译器一致:
, W Y8 b& f. v% @" v y+ m* kARM-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
! M' G1 }: c7 {3 L# B* k$ U9 FUbuntu 版本:Ubuntu16: Y2 `8 ]4 o$ D1 y" e' [7 [- O4 w
(1)移植 zlib
! J4 ~2 a) W& ^6 x! E. D从迅为提供的资料中拷贝“ 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 ~5 L. w, X) S, d+ J
( D* e, _# q/ h3 w1 I% u
接着使用命令“./configure --prefix=/home/ssh/ssh_install/zlib-1.2.3”,设置配置文件,
! ] @( V2 h# `6 b' W/ T4 v' h其中--prefix=/home/ssh/ssh_install/zlib-1.2.3 指定了 zlib 的安装路径。
; A, h! M$ Y9 N. Q+ M \如图 62.6.1.2 所示 :
7 Z) \8 E2 W, G( o![]()
& @- X0 | V7 |使用命令“ vim Makefile” 修改编译参数,将所有 gcc 修改为“ arm-none-linux-gnueabi-gcc”如图 62.6.1.3 所示
9 Y, h8 ^( l1 d7 D3 v* _ 9 z% D" R" {& P# w7 t9 e$ p& z: O
接着使用编译命令“make” ,如图 62.6.1.4 所示/ I1 z5 M' G4 o, r
![]()
0 A- n* v5 _, g1 ], Q6 c6 C9 G+ E7 Q执行 make 无报错后,接着使用安装命令“make install” ,如图 62.6.1.5 所示
# s! I! s) K, a9 q/ `3 _' ^![]()
7 g# v$ n/ a7 }1 |/ I0 r8 ]现在已经安装好了 zlib 库,在后面编译 SSH 的时候,需要用到 zlib 库,作者这里的路径是“/home/ssh/ssh_install/zlib-1.2.3” ,后面配置的时候需要对应生成的库文件,如图 62.6.1.6 所示
. ^. }6 W) s1 k![]()
$ e' a( D8 U7 D5 B$ _; I(2)移植 openssl
7 P/ ]5 S. |" S; |接着来移植 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 所示。4 ~0 n& ~* b0 M4 r- |: K; w9 g, N9 j
![]()
# b$ K _9 `$ l* M3 S! b7 W! A" y接着使用命令“./Configure linux-elf-arm -DB_ENDIAN linux:'arm-none-linux
. [% ~9 e- q- Y-gnueabi-gcc' --prefix=/home/ssh/ssh_install/openssl-0.9.8h” 配置编译文件,如图 62.6.1.8 所示。
k' Y) D- E9 `& {![]()
* |3 l. l! P3 l# _+ n& k' D使用编译命令“make” 编译完成,如图 62.6.1.9 所示' c9 j5 {" Z7 ]# }9 [; m9 m
![]()
1 m/ P0 n+ a" Y0 O- h最后使用安装命令“make install” ,如果在安装过程提示以下错误,如图 62.6.1.10 所示:
2 h) k- u7 V% q; e K% ` 7 f* u0 r) N7 I8 c: \' c# d
执行命令 rm -f /usr/bin/pod2man 可以解决,如图 62.6.1.11 所示:* @# _5 G6 R- b
![]()
1 r' O$ K9 x6 ~1 a7 G" R- p& T然后再次执行 make install 即可安装成功,如图 62.6.1.12 所示:0 `- ^# k$ D8 ~- A3 Q6 n# D
& q7 `' I" t# r: J% m5 n% u8 y
(3)移植 ssh
- P' l+ h9 I% \& I/ S+ c接着来移植 openssh, 拷贝“ openssh-4.6p1.tar.gz” 到 Ubuntu 系统,使用命令“ tar
8 q: D# o+ w" Y6 E W2 [-vxfopenssh-4.6p1.tar.gz” 解压,得到“openssh-4.6p1” 文件夹,使用命令“cd openssh-4.6p1/” 进入“openssh-4.6p1” 文件夹,如图 62.6.1.13 所示% t7 H3 b' N7 Z9 }3 o; d! Z# }
![]()
# z! u* D1 W' o6 {5 E6 R/ {) K这里看一下 ssh 的 configure 的帮助文件,如下图所示,使用“ ./configure --help) e0 z$ ~4 n+ g+ e
ssh 的 configure 文件中需要配置的参数5 C/ ~3 g$ J; a5 F& |
--host 表示编译出来要运行的平台
3 u' H* D7 n3 A" M--with-libs 表示需要的额外的库文件;/ ^: g% B& ]3 W% I
--with-zlib 表示库文件 zlib 的 instal 路径 l;5 R' \% \, R! J, ]
--with-ssl-dir 表示 OpenSSl 文件的 install 路径;8 s$ l$ ]: k) d) U, f. h
--disable-etc-default-login 表示不使用当前环境变量的编译器, 所以后面配置参数时, 最后直接配置, [$ P# C' B" R- N8 U, _0 f
CC 和 AR 这两个编译器;
6 I# w+ \: k' U# {CC 表示设置使用的编译器;4 @/ t. a% `8 H* e
AR 表示设置使用的编译器的路径(蛮奇怪, 配置文件中似乎没有这个参数, 用户可以执1 W. V* z2 D3 h
行验证下)
6 @: Q* s- m0 \7 c$ E" u) L接着使用配置命令,命令比较长,作者使用颜色给大家分段:- q P7 v; q0 m: ~6 m" e
./configure --host=arm-none-linux --with-libs
- [8 b7 R' K# D+ z--with-zlib=/home/ssh/ssh_install/zlib-1.2.3) t* i9 D8 r0 H H0 `. _
--with-ssl-dir=/home/ssh/ssh_install/openssl-0.9.8h/ M2 o! K3 i6 g7 ~( T
--disable-etc-default-login CC=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc
. {4 V/ M! u% J8 V+ c) SAR=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-ar. D, }1 b' ^$ s; w& E0 F" }1 P2 h
如图 62.6.1.14 所示:
5 x* |5 ?2 B2 [ * N. \0 ], V8 g
执行成功如图 62.6.1.15 所示:
7 e0 [2 J [ _![]()
+ Y4 u* [ e$ L$ A+ \使用编译命令“make” ,编译完成,如图 62.6.1.16 所示& V" q/ ?1 w2 ^8 Q- _" Z) A
![]()
7 M7 {6 {+ j$ A+ L9 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上使用的可执行文件
0 v- E9 N: v" `3 g/ A2 c! ^7 W7 k![]()
$ @" a, {! U2 J |
|