|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
之前我们写好一个程序,都是先交叉编译完,然后在通过 nfs/tftp 或者其他的方法拷贝到开发板,然后在手动执行,如果我们调试程序很频繁,那我们每次都重新拷贝到开发板,那这样就太麻烦了,有没有方便一点的办法呢,这个就是接下来我们要介绍的一种方法,一键烧写 QT 程序到开发板,我们只需要在qtcreater 上点击一下编译,那么 QT 程序会自动到开发板上来运行,是不是非常的方便?7 n1 h5 V* S6 ~+ B8 Y/ C
85.1 在开发板上移植 ssh1 j4 S6 H3 U) ?" R! x4 Z1 x) [
要想实现一键烧写,那么我们必须就先要在开发板上移植一个 ssh,本次实验我们使用的是 busybox 文件系统,这个文件系统并不支持 ssh,所以我们要先移植一个上去。接下来,我们一起来移植一下。' ^7 [% @1 v' {
移植环境:
: d6 w! U0 K8 {& W) i编译器保持和编译文件系统和 QT 的编译器一致:
- u0 F) Q" C! {% i, xARM-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
0 z% S% i, t+ hUbuntu 版本:Ubuntu16
N0 x" P2 u7 D2 m {9 {(1)移植 zlib' U( O# J6 l! G) R9 c" m1 @: Q
从迅为提供的资料中拷贝“ 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.18 X& v0 q$ ]/ Z# l4 Y
![]()
4 t+ w1 F% l* k! ?/ x+ U接着使用命令“./configure --prefix=/home/ssh/ssh_install/zlib-1.2.3”,设置配置文件,
% _# D- B& f& G3 T其中--prefix=/home/ssh/ssh_install/zlib-1.2.3 指定了 zlib 的安装路径。2 g, M3 l( P7 e5 M/ u: h i% R9 g( P. B
如图 62.6.1.2 所示 :' e4 K$ D5 u7 J6 u$ q/ b I
6 j; I$ i; @% ?6 c
使用命令“ vim Makefile” 修改编译参数,将所有 gcc 修改为“ arm-none-linux-gnueabi-gcc”如图 62.6.1.3 所示; A5 Z, G/ n1 r; B0 B
3 m( S9 h/ v- Q" k0 `) f
接着使用编译命令“make” ,如图 62.6.1.4 所示7 g0 r% C1 m: s# |/ j C! |' x
5 R$ K5 ~, h) _' T
执行 make 无报错后,接着使用安装命令“make install” ,如图 62.6.1.5 所示+ q4 O1 Y5 c- ~% @, k X3 r" J: N
![]()
2 L+ P; Z% [3 M# P) S现在已经安装好了 zlib 库,在后面编译 SSH 的时候,需要用到 zlib 库,作者这里的路径是“/home/ssh/ssh_install/zlib-1.2.3” ,后面配置的时候需要对应生成的库文件,如图 62.6.1.6 所示" j+ ]% k x4 ?0 m5 d$ C5 J& ` @
5 e0 c1 H/ ^: Y4 ~2 U# Z7 h/ z& z
(2)移植 openssl5 J2 R. Q. g" 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 所示。
6 k4 ]* y- l- n+ `; F & b* M3 r- S2 A4 q: L4 v# |! E
接着使用命令“./Configure linux-elf-arm -DB_ENDIAN linux:'arm-none-linux
, H: X9 e7 B5 K-gnueabi-gcc' --prefix=/home/ssh/ssh_install/openssl-0.9.8h” 配置编译文件,如图 62.6.1.8 所示。
0 v- @* R; h4 |![]()
/ @7 [) _7 c' u9 x3 L$ I4 E- }2 ?使用编译命令“make” 编译完成,如图 62.6.1.9 所示1 z+ s# ]3 N% H" y3 W
. t! b- }$ z4 Q$ J' _
最后使用安装命令“make install” ,如果在安装过程提示以下错误,如图 62.6.1.10 所示:
& C$ T) L) p! V + p. |4 |1 k; X$ t: c1 E
执行命令 rm -f /usr/bin/pod2man 可以解决,如图 62.6.1.11 所示:
' ]: C6 W x$ o/ C; t![]()
/ t1 Z+ r8 ]+ ^- B# C* c然后再次执行 make install 即可安装成功,如图 62.6.1.12 所示:
7 o! h' o6 c, r/ o$ F $ {: D$ m5 q. P7 n- j
(3)移植 ssh
2 a" U: l- O3 B b8 e! x接着来移植 openssh, 拷贝“ openssh-4.6p1.tar.gz” 到 Ubuntu 系统,使用命令“ tar
7 f4 \) X1 p+ d7 e g6 I-vxfopenssh-4.6p1.tar.gz” 解压,得到“openssh-4.6p1” 文件夹,使用命令“cd openssh-4.6p1/” 进入“openssh-4.6p1” 文件夹,如图 62.6.1.13 所示
. \9 T# q6 Z N3 P& \' {- {3 |1 G![]()
) i _3 @* g* c7 \这里看一下 ssh 的 configure 的帮助文件,如下图所示,使用“ ./configure --help
' i$ e g2 k& H3 N9 Q; }ssh 的 configure 文件中需要配置的参数' j1 [, e3 Y/ M$ P( o1 d0 Z+ F
--host 表示编译出来要运行的平台: j# M* b' X7 R1 @0 u
--with-libs 表示需要的额外的库文件;
& D" } W! ]+ Y--with-zlib 表示库文件 zlib 的 instal 路径 l;! [8 s V$ L2 u7 M: j3 F7 G6 s
--with-ssl-dir 表示 OpenSSl 文件的 install 路径;+ g* s# g! `: W6 ]
--disable-etc-default-login 表示不使用当前环境变量的编译器, 所以后面配置参数时, 最后直接配置# `7 g- G. @0 H0 X" Q
CC 和 AR 这两个编译器;+ [ M4 b$ @% e- _9 {
CC 表示设置使用的编译器;
. C' N7 [; p+ ~ M) m! IAR 表示设置使用的编译器的路径(蛮奇怪, 配置文件中似乎没有这个参数, 用户可以执" Q" b5 T" M, y3 \6 @
行验证下)
0 |' L' o) t' G; h4 S2 C接着使用配置命令,命令比较长,作者使用颜色给大家分段:
: y- d9 g1 _ q" Y4 @: L# z# ]./configure --host=arm-none-linux --with-libs
/ s* w. J4 \2 c2 X% Z--with-zlib=/home/ssh/ssh_install/zlib-1.2.3
! u$ d' h7 m( Q9 F( F" _3 a6 w--with-ssl-dir=/home/ssh/ssh_install/openssl-0.9.8h) H$ A Z; D( n+ a6 S( L5 X- ~1 Z
--disable-etc-default-login CC=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc' i a8 D1 T* D. S, C
AR=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-ar) l! B8 b0 X% q. M! [* O5 X
如图 62.6.1.14 所示:
/ g+ f% N5 ~1 T, B 3 S5 i/ W# d/ E0 N& ~
执行成功如图 62.6.1.15 所示:0 B# k* S& g& J1 N# M. t5 s0 v
![]()
0 z* N' |5 h% G4 U使用编译命令“make” ,编译完成,如图 62.6.1.16 所示
2 U% f0 t4 z9 P& b. i: W' M) t " g& i t2 ^3 b# d4 I* ?# y
编译完成,最后肯定是需要安装到开发板上的,如图 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上使用的可执行文件
' w( L0 M5 F" V7 a/ V( v![]()
8 F3 U" ]9 D( l7 W |
|