Linux ARM交叉编译工具链制作过程
时间:11-21
来源:互联网
点击:
一、下载源文件
源代码文件及其版本与下载地址:
Binutils-2.19.tar.bz2
http://ftp.gnu.org/gnu/binutils/
gcc-4.4.4.tar.bz2
http://mirrors.kernel.org/gnu/gcc/gcc-4.4.4/
Glibc-2.11.2.tar.bz2
Glibc-ports-2.11.tar.bz2
http://ftp.gnu.org/gnu/glibc/
Gmp-4.2.tar.bz2
http://ftp.gnu.org/gnu/gmp/
Mpfr-2.4.0.tar.bz2
http://ftp.gnu.org/gnu/mpfr/
Linux-2.6.29.tar.bz2
Patch-2.6.29.bz2
http://www.kernel.org/pub/linux/kernel/v2.6/
一般一个完整的交叉编译器涉及到多个软件,主要包括binutils、gcc、glibc等。其中,binutils主要生成一些辅助工具;gcc是用来生成交叉编译器,主要生成arm-linux-gcc交叉编译工具,而glibc主要提供用户程序所需要的一些基本函数库。
二、建立工作目录
编译所用主机型号 FC12.i686
第一次编译时用的是root用户(第二次用一般用户karen,该用户可以使用sudo指令)
所有的工作目录都在/home/Karen/cross下面建立完成,首先在/home/karen目录下建立cross目录
[root@localhost karen] mkdir cross
进入工作目录:
[root@localhost root]#cd /home/karen/cross
查看当前目录:
[root@localhost cross ]# pwd
/home/karen/cross
创建工具链文件夹:
[root@localhost cross]# mkdir embedded-toolchains
在建立了顶层文件夹embedded- toolchains,下面在此文件夹下建立如下几个目录:
Ø setup-dir,存放下载的压缩包;
Ø src-dir,存放binutils、gcc、glibc解压之后的源文件;
Ø kernel,存放内核文件,对内核的配置和编译工作也在此完成;
Ø build-dir ,编译src-dir下面的源文件,这是GNU推荐的源文件目录与编译目录分离的做法;
Ø tool-chain,交叉编译工具链的安装位;
Ø program,存放编写程序;
Ø doc,说明文档和脚本文件;
下面建立目录,并拷贝源文件。
[root@localhost cross] #cd embedded- toolchains
[root@localhost embedded- toolchains] #mkdir setup-dir src-dir kernel build-dir tool-chain program doc
[root@localhost embedded- toolchains] #ls
build-dir doc kernel program setup-dir src-dir tool-chain
[root@localhost embedded- toolchains] #cd setup-dir
拷贝源文件:
这里我们采用直接拷贝源文件的方法,首先应该修改setup-dir的权限
[root@localhost embedded- toolchains] #chmod 777 setup-dir
然后直接拷贝/home/karen目录下的源文件到setup-dir目录中,如下图:
建立编译目录:
[root@localhost setup-dir] #cd ../build-dir
[root@localhost build -dir] #mkdir build-binutils build-gcc build-glibc
三、输出环境变量
输出如下的环境变量方便我们编译。
为简化操作过程。下面就建立shell命令脚本environment-variables:
[root@localhost build -dir] #cd ../doc
[root@localhost doc] #mkdir scripts
[root@localhost doc] #cd scripts
用编辑器vi编辑环境变量脚本envionment-variables:
[root@localhost scripts] #vi envionment-variables
export PRJROOT=/home/mxl/diliuzhang/embedded- toolchains
export TARGET=arm-linux
export PREFIX=$PRJROOT/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH
截图如下:
%% Q:为什么用了source ./environment-variables才正常执行,去掉source就没有执行? %%
%% 如果用source 执行, 不需要脚本有执行权限, 权限为664也可以,执行命令如下:%%
%% Source environment-variables %%
说明:
TARGET变量用来定义目标板的类型,以后会根据此目标板的类型来建立工具链。参
看表6-1所示。目标板的定义与主机的类型是没有关系的,但是如果更改TARGET的值,
GNU工具链必须重新建立一次。
PREFIX变量提供了指针,指向目标板工具程序将被安装的目录。
TARGET_PREFIX变量指向与目标板相关的头文件和链接库将被安装的目录。
PATH变量指向二进制文件(可执行文件)将被安装的目录。
如果不惯用环境变量的,可以直接用绝对或相对路径。如果不用环境变量,一般都用绝对路径,相对路径有时会失败。环境变量也可以定义在.bashrc文件中,这样就不用老是export这些变量了。
体系结构和TAEGET变量的对应如下表6-1所示:
表6-1 体系结构和TAEGET变量的对应
源代码文件及其版本与下载地址:
Binutils-2.19.tar.bz2
http://ftp.gnu.org/gnu/binutils/
gcc-4.4.4.tar.bz2
http://mirrors.kernel.org/gnu/gcc/gcc-4.4.4/
Glibc-2.11.2.tar.bz2
Glibc-ports-2.11.tar.bz2
http://ftp.gnu.org/gnu/glibc/
Gmp-4.2.tar.bz2
http://ftp.gnu.org/gnu/gmp/
Mpfr-2.4.0.tar.bz2
http://ftp.gnu.org/gnu/mpfr/
Linux-2.6.29.tar.bz2
Patch-2.6.29.bz2
http://www.kernel.org/pub/linux/kernel/v2.6/
一般一个完整的交叉编译器涉及到多个软件,主要包括binutils、gcc、glibc等。其中,binutils主要生成一些辅助工具;gcc是用来生成交叉编译器,主要生成arm-linux-gcc交叉编译工具,而glibc主要提供用户程序所需要的一些基本函数库。
二、建立工作目录
进入工作目录:
[root@localhost
[root@localhost
/home/karen/cross
创建工具链文件夹:
[root@localhost
在建立了顶层文件夹embedded- toolchains,下面在此文件夹下建立如下几个目录:
Ø
Ø
Ø
Ø
Ø
Ø
Ø
[root@localhost
[root@localhost
[root@localhost
build-dir doc kernel program setup-dir src-dir tool-chain
[root@localhost
这里我们采用直接拷贝源文件的方法,首先应该修改setup-dir的权限
[root@localhost
然后直接拷贝/home/karen目录下的源文件到setup-dir目录中,如下图:
建立编译目录:
[root@localhost
[root@localhost
三、输出环境变量
输出如下的环境变量方便我们编译。
为简化操作过程。下面就建立shell命令脚本environment-variables:
[root@localhost
[root@localhost
[root@localhost
用编辑器vi编辑环境变量脚本envionment-variables:
[root@localhost
export
export
export
export
export
截图如下:
%% Q:为什么用了source ./environment-variables才正常执行,去掉source就没有执行? %%
%%
%%
说明:
TARGET变量用来定义目标板的类型,以后会根据此目标板的类型来建立工具链。参
看表6-1所示。目标板的定义与主机的类型是没有关系的,但是如果更改TARGET的值,
GNU工具链必须重新建立一次。
PREFIX变量提供了指针,指向目标板工具程序将被安装的目录。
TARGET_PREFIX变量指向与目标板相关的头文件和链接库将被安装的目录。
PATH变量指向二进制文件(可执行文件)将被安装的目录。
如果不惯用环境变量的,可以直接用绝对或相对路径。如果不用环境变量,一般都用绝对路径,相对路径有时会失败。环境变量也可以定义在.bashrc文件中,这样就不用老是export这些变量了。
体系结构和TAEGET变量的对应如下表6-1所示:
表6-1 体系结构和TAEGET变量的对应
体系结构 | TARGET变量的值 |
PowerPC | Powerpc-linux |
ARM | arm-linux |
MIPS(big endian) | mips-linux |
MIPS(little endian) | mipsel-linux |
MIPS64 | mips64-linux |
SuperH3 | sh3-linux |
SuperH4 | sh4-linux |
I386 | i386-linux |
Ia64 | ia64-linux |
LinuxARM交叉编译工具 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)