为了以后能在arm开发板上运行pc端上的程序,所以必须制作一个交叉编译器,我用的是buildroot-2012.02版本

*交叉编译器制作步骤:

*一.准备交叉编译器源码包

1. 一般我们要把源码包放到我们自己虚拟机的/opt目录下,但这不是绝对的,为的是以后能使用郭工的一些源码包能够成功的编译,由于在linux安装后,/opt目录只有root用户才具有写的权限,所以当我下载buildroot-2012.02.tar.bz2源码包到/opt目录下时要设置root权限。

cyclictest 交叉编译_cyclictest 交叉编译


2.接着在虚拟机终端用wget命令下载源码包,具体方法为:wget https://buildroot.org/downloads/buildroot-2012.02.tar.bz2当然也可以直接在windows下载好后传到linux上,由于我这样子做导致有些源码包没有全部传上去,后来编译总是出错,检查发现是我的虚拟机不能上网,我就直接用的wget命令。

cyclictest 交叉编译_编译安装_02


3.在/opt目录下查看源码包是否下载成功,在该目录下如果显示出了你要的源码包则成功下载好了,然后对其源码包进行解压,linux命令 tar -xjf buildroot-2012.02.tar.bz2,解压好后则会产生一个buildroot-2012.02的文件夹,如下图

cyclictest 交叉编译_cyclictest 交叉编译_03


这样buildroot-2012.02的源码包就准备好了,接下来就可以配置交叉编译器了。

二.配置交叉编译器

在编译交叉编译器之前,配置好交叉编译器,选择要依赖的软件包以及哪些版本。输入以下命令则开始配置交叉编译器。

cyclictest 交叉编译_源码包_04


输入make menuconfig后系统会出现如下界面

cyclictest 交叉编译_cyclictest 交叉编译_05


1.Target Architecture默认的是i386的编译器,因为以后要在arm上运行程序,则这里要改为arm,第二项里面要改为arm920t,主要是为了学习方便,这里我是用的是s3c2440的cpu,以后可以根据自己的需要选择相应cpu的类型,然后这里面的参数也设置为相应的类型,这里可以通过cpu的datasheet来查看是基于哪个arm核的

cyclictest 交叉编译_交叉编译_06


cyclictest 交叉编译_源码包_07


注意:这里选中相应选项,然后按Enter键就可以了。

2.配置Build options

这里开始配置Build options的相应选项,如下:

cyclictest 交叉编译_源码包_08


这里默认路径为 (TOPDIR)/dl,然而应该要把它改为(TOPDIR)/buildroot-2012.02,要特别注意,下面默认是 (BASE_DIR)/HOST,因为以后要用到郭工的代码,所以这里我做出来的交叉编译器所放的路径要要改为$(TOPDIR)/arm920t

cyclictest 交叉编译_编译安装_09


3.配置Toolchain

接下来配置Toolchain选项,这里主要是选择linux内核头文件的版本,GNU/GCC相关工具链的版本,相关选项如图所示,注意“Kerner Headers options”这里我们先要设置“Linux 2.6 (manually specified version),然后再输入“linux version”的版本为2.6.37。

cyclictest 交叉编译_源码包_10


cyclictest 交叉编译_交叉编译_11


cyclictest 交叉编译_交叉编译_12


接着并选择enable C++ support 和enable stack protection support。

cyclictest 交叉编译_交叉编译器_13


4.其他配置

在完成上面的配置后,剩下的配置就比较简单了:

“System configuration —>”使用默认的选项,不要作修改;

“Package Selection for the target —>”这里我们只选择今后经常需要的两个库文件:

Package Selection for the target —>

Libraries —>

Compression and decompression —>

[*] lzo

[*] zlib

cyclictest 交叉编译_源码包_14


cyclictest 交叉编译_源码包_15


cyclictest 交叉编译_交叉编译_16

“Filesystem images —>”全部取消,不要选;

cyclictest 交叉编译_交叉编译器_17

“Bootloaders —>”全部取消,不要选;**

cyclictest 交叉编译_源码包_18


“Kernel —>”全部取消,不要选;

cyclictest 交叉编译_源码包_19

cyclictest 交叉编译_cyclictest 交叉编译_20

注意:最后所有配置都配置好后,一定要记得保存!!!一定要记得保存!!!一定要记得保存!!!(重要的事情说三遍)

5.完成配置

完成配置并保存之后,在当前目录下可以看到一个.config的掩藏文件,在之后的编译过程中,makefile将根据这个文件来选择相应的软件包和特性来进行编译安装。

cyclictest 交叉编译_交叉编译器_21


接着就开始编译安装了工作

三.编译交叉编译器

1.完成上面的所有配置之后,接下来编译就特别简单了,只需要输入make命令就可以了。

cyclictest 交叉编译_编译安装_22


这个过程特别漫长,我编译用了2个多小时,还好中途我去做了其他事,嘿嘿最后生成的交叉编译在在/opt/buildroot2012.02/arm920t

/usr/bin/路径下:

cyclictest 交叉编译_cyclictest 交叉编译_23

四.测试交叉编译器

首先写一个简单的小程序进行测试,我写的是hello.c的一个小程序,然后用制作好的交叉编译器进行编译,生成一个hello的可执行文件,然后用file命令查看文件属性,可以看到这个文件是在ARM下运行的,具体如下:

cyclictest 交叉编译_交叉编译_24


当我们把这个hello文件下载到ARM开发板上时,应该能运行了,制作交叉编译器原来这么简单,哈哈!!!

注意:1.交叉编译器在进行配置过程中,选中配置中的相应选项是“y”键,取消是“n”键。

2.配置交叉编译器之前设置环境变量 export TERM=vt100的目的是如果通过securecrt(其他远程登陆虚拟机软件也行)远程登陆虚拟机终端的话,防止出现乱码。