linux交叉编译器的制作

1 准备交叉编译器源码包

1.1上传源码包到虚拟机上
1.1.1修改/opt目录权限

我们一般会将交叉编译器放到虚拟机的/opt路径下,但这不是绝对的。为了保证今后使用我的源码包编译正常,大家都最好放到这里。由于在Linux安装后,/opt目录默认只有root才有写的权限,所以在上传这些源码包之前首先要修改他的权限。

[hulu@centos6 ~]$ sudo chmod 777 /opt/

[hulu@centos6 ~]$ cd /opt/

1.1.2下载源码包到Linux服务器

在修改/opt目录的权限后,我们就可以使用svn命令下载的源码包到本地Linux服务器的/opt路径下,第一步是在浏览器上输入emb-lingyun.xicp.net:8888/fl2440//trunk/src/crosstool/得到所需源码包的地址在如下图所示:
这里写图片描述

下载完成之后,使用tar -xjf 命令解压缩,我们就可以在Linux主机上看到这些源码包了:
这里写图片描述

1.1.3下载源码包并准备编译目录结构

在Linux源码包上传完成之后,我们就可以解压缩准备编译环境了。首先解压缩上传的buildroot-2011.11.tar.bz2压缩包:

[hulu@centos6 opt]$ mv buildroot-2012.08 dl

[hulu@centos6 opt]$ tar-xjf dl/buildroot-2012.08.tar.bz2

[hulu@centos6 opt]$ ls buildroot-2012.08

[hulu@centos6 opt]$ mv dl/ buildroot-2012.08

[hulu@centos6 opt]$cd buildroot-2012.08

[[email protected]]$ ls
board CHANGES configs dl fs Makefile support toolchain boot Config.in COPYING docs linux package target
这样Linux服务器上的buildroot-2012.08的源码包就准备好了。之后我们就准备开始编译交叉编译器了。

2配置交叉编译器选项

2.1配置交叉编译器CPU类型
在开始编译交叉编译器之前,我们要先配置交叉编译器,使用那些依赖的软件包的哪些版本。输入以下命令我们开始交叉编译器的配置: 这里写图片描述

在我们输入make menuconfig之后,系统会出现以下界面:
linux交叉编译器的制作_第1张图片
这里,默认的是i386的编译器,我们开始设置为ARM的交叉编译器。首先修改下面红色标记的三处如下:

Target Architecture (ARM (little endian)) —>
Target Architecture Variant (arm920t) —> 根据自己的CPU来选择
Target ABI (EABI) —>
linux交叉编译器的制作_第2张图片
今后大家工作时,不一定使用s3c2440这个CPU,这样大家就需要根据自己的CPU类型来在这里选择相应的类型,这个可以从CPU的datasheet上看到究竟是基于哪个ARM核的。

2.2配置Buildroot Options
这里我们开始配置交叉编译器的”Build options —>”选项,如下:

Build options —>
($(TOPDIR)/dl) Download dir

($(TOPDIR)/arm920t) Host dir
[*] prefer static libraries
其它选项都不要选,如果是要设置值的地方就使用默认值

大家可以看到这里的“($(TOPDIR)/dl) Download dir (NEW)”,这里的dl就是为什么之前我们要把源代码文件夹重命名为dl的原因。

“((TOPDIR)/arm920t) Host dir”就是指定我们制作出来的交叉编译器所在的路径,注意这里大家设置为 (TOPDIR) {BASE_DIR},否则以后用我的代码可能会有问题。

2.3 配置“Toolchain”选项
接下来我们配置Toolchain,这里主要是选择Linux内核头文件的版本,GNU/GCC相关工具链的版本等。具体选项如下:

Toolchain —>
Kernel Headers (Linux 2.6 (manually specified version)) —>
(2.6.37) linux version 选定内核版本为2.6.37
… …
[*] Enable compiler tls support
[*] Enable MMU support
[*] Use software floating point by default
[*] Enable large file (files > 2 GB) support
[*] Enable IPv6 support
[*] Enable RPC support
[*] Enable WCHAR support
[*] Enable C++ support
其它选项都不要选,如果是要设置值的地方就使用默认值linux交叉编译器的制作_第3张图片
注意上面在“Kernel Headers”先要设置“Linux 2.6 (manually specified version)”,然后再输入“linux version”的版本为2.6.37。
linux交叉编译器的制作_第4张图片
并选择enable C++ support 和enable stack protection support。

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

System configuration —>
Init system (None) —> 把Busbyox编译去掉
这里面所有的都不要选,如果是要设置值的地方就使用默认值“Package Selection for the Package Selection for the target —>
这里面所有的选项都不要选,除了:
Libraries —>
Compression and decompression —>
[*] lzo
[*] zlib
“Filesystem images —>”全部取消,不要选;
“Bootloaders —>”全部取消,不要选;
“Kernel —>”全部取消,不要选;

2.5完成配置

在完成上面的所有配置后,我们选择“Save an Alternate Configuration File”保存这些配置,然后使用“Tab”键选择到“Exit”上退出。这时,我们就会在当前目录下,看到一个名为.config的掩藏文件。在之后的编译过程中,Makefile将根据这个文件来选择相应的软件包和特性来编译安装。

这里写图片描述

*

3编译交叉编译器

*
在完成上面的配置之后,接下来的编译过程就非常简单了。我只需要输入make命令,这时系统就开始编译制作交叉编译器了。

这里写图片描述
这个过程会有点漫长,在我的Linux服务器上大概需要30分钟。如果是虚拟机差一点的PC的话,时间可能会更长。如果编译成功的话,最后生成的交叉编译器会在/opt/buildroot-2011.11/arm926t/usr/bin/路径下:
linux交叉编译器的制作_第5张图片
经过上面的步骤我们就制作成了一个交叉编译器

你可能感兴趣的:(交叉编译)