|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
) o( z- }6 M4 v/ N: e
电脑系统:win7系统。虚拟机系统:workstation6.5 。虚拟机安装的linux版本:fedora9.0。内核:linux2.6.25 。
, {# m" I- B/ `
7 C2 V) G$ ^0 H2 \) q 首先简单介绍一下,所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。
( w" S' h) k( A8 M1 K0 }
/ t: ]2 O: n- o 交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,ARM-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。
5 Y7 {1 _, C/ `3 X5 w* g& f
' K |# s0 o" a* k 那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。( R3 M* Y/ ]: l+ g! S4 x5 O
9 O# d, Q+ b+ O' e) H+ l4 R) e
现在正是介绍交叉编译工具链的安装步骤,我使用的交叉编译工具链是arm-linux-gcc-4.4.3,把它放在linux系统的路径是图一:
& j0 h3 f+ a* C7 `# H" S' k ]5 [+ w5 O3 F
- p& s9 P1 k1 V: t$ q
如图一所示,在linux系统的路径/home/song/share下放了交叉编译工具链arm-linux-gcc-4.4.3的压缩包,另一个版本的不用。有的人可能会问到怎么把这个压缩包弄到虚拟机的linux的系统的,我是通过samba服务从主机复制到虚拟机的,这里的share文件夹就是我samba服务器的工作目录,多了不说,这不是重点。 I# y- ~: v5 V) y' y+ X( a
$ {/ y% O" y$ o" T: X/ X# L 然后通过命令mkdir embedded 建立一个arm-linux-gcc的安装目录,如图二所示。当然安装路径和目录名称“embedded”可以依自己的喜好而定。
" G$ i( M# y5 u4 Q4 R
4 f8 S+ _/ f4 b! m( [- N% u
& B! A f2 e4 p/ o7 ~0 P
0 \9 C! X' \! ? H: v- Y2 \# v
/ b& e" J* R2 F! o/ M, F& S. }, J9 L, N0 m6 a4 w) d1 m7 K* F
然后通过命令将share文件夹下的arm-linux-gcc-4.4.3.tar.gz复制到这里的embedded文件夹下,如图四所示。当然这里你也可以不进行这一步我这是为了方便以后管理,将arm-linux-gcc安装到embedded文件夹下,方便以后寻找。/ u; k/ L9 ]$ S- @+ Q7 ]+ ~
+ v" D: h' r- v4 B; v
0 }4 \- O) t9 m; b5 }1 V, S5 g' s" X! i+ O& G3 `! V
然后使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将embedded文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下 ,如图五所示。
1 L& t" N# {& d
- n/ z$ B- |) Z% t$ u3 E) O
# {" R/ Q+ X9 X
% _/ @! I( D0 x( s# Y6 [5 { 执行完解压缩命令,就已经将交叉编译工具链arm-linux-gcc-4.4.3安装到linux系统上了,这里默认安装到了图六所示的路径上。
# [8 F& c! k1 c8 C' j' i: u7 v& c3 r1 d: @' |7 k
" v# ]% _, Q$ l
7 k8 ?/ y* y( l5 w0 F' ?! F5 h 接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。记下图六中的安装路径,使用图七中的命令:vi /etc/profile 编辑profile文件,添加环境变量。
3 H+ ~3 q8 d; E2 h* B" h, u3 S
+ p7 W2 G$ ?8 s7 j1 ?
! L }- z3 T. s% k8 K* @
( z& r7 ~0 m; i' S2 x
在profile中的位置处,添加图八所示的红线标注的一行,路径就是图六中的红线标注的路径后面加上/4.4.3/bin。
% m6 a; u% {$ h! n" M+ e6 k* M$ q9 t! k7 c9 f l* \& W; ?# u' J% R
2 \1 T: c* ?. N/ K4 h+ c. Q
6 g6 l3 }. `8 G* |8 j/ {
图八中的路径一定是你自己的安装路径,可以使用pwd命令查找一下那个bin目录的路径。添加完路径后,保存退出。接下来使用命令:source /etc/profile,是修改后的profile文件生效,如图九所示。
! O* F6 @! t9 Z! F
8 i8 u/ b8 q( |
" g. P9 x X, a) {; i2 _
8 Z' \' N- P1 V
然后,使用命令:arm-linux-gcc -v查看当前交叉编译链工具的版本信息,如图九中的红线标注第③行所示。很明显从图九可以看到,如果不执行第②步,则查看版本信息不成功。
W5 U! `8 S9 ~6 y' B8 E8 @0 i! l! c
[8 P$ I7 ~ b, [1 w 然后验证交叉编译工具链是否安装成功并且可以使用,如图九所示,随便找一个目录编辑一个hello源代码。$ [. r) [. G' D
. m2 g9 T2 R A+ M* c8 d B5 [
/ m L. k. G, E" _3 l
. b$ b; m6 {4 d/ o' \4 _
( @" z2 y4 u, T* e
. J" H( F3 y. R7 y
编辑好hello.c文件后,保存退出。然后使用交叉编译器对hello.c进行编译,并生成可执行文件hello,如图11所示。7 p9 v; R2 y' o7 z
+ S: d& H5 c9 _, _$ A! A
1 ~$ F5 B: n) m1 f( l
7 N# [, T- |2 K 这里生成的hello文件并不能像gcc编译出来的文件那样直接使用“./hello”命令执行并显示内容, 如图12所示,因为它是一个二进制文件,只能下载到开发板上执行!
; o% k. A' J. E
9 C V0 c' D: D) C
6 O; X8 g4 F0 F/ `# S' H: M* H/ b# l! z1 Y X- S+ e6 w8 c* b
至此,搭建交叉编译环境步骤结束。
- I( ]" Q# f) [# R |
|