交叉工具链的 制作与移植

 

【实验目的】

       了解交叉工具链的编译过程及其使用。

       说明:在本系统移植课程实验中命令行提示符 “$”表示是在主机上执行,“#”表示在目标板执行

【实验环境】

1、  Ubuntu 10.10发行版

2、  FS2410平台

【实验步骤】

       1、源码下载 

       Crosstools-ng下载地址(地址有效)

http://ymorin.is-a-geek.org/download/crosstool-ng/

       同时对每一个版本都有相应的补丁我们尽量把这些补丁打上,这些补丁的下载地址是

http://ymorin.is-a-geek.org/download/crosstool-ng/01-fixes/

我这里选用的是crosstool-ng-1.8.1.tar.bz2

并下载补丁

000-scripts_log_do_not_interpret_log_string_as_printf_format.patch

001-binutils_binutils_remove_faulty_patch.patch

002-kconfig_resync_curses_check_with_Linux_kernel.patch

2、工具的安装

在使用之前必须安装一些软件

$ sudo apt-get install gawk autotools-dev automake texinfo libtool cvs patch bison flex libncurses5-dev

3、   必要目录的创建

$ mkdir toolchain_build

$ mkdir toolchain_install

4、   解压源码并打补丁

$ tar xvf crosstool-ng-1.8.1.tar.bz2

$ cd crosstool-ng-1.8.1

$ patch –p1 < 000-scripts_log_do_not_interpret_log_string_as_printf_format.patch

$ patch –p1 < 001-binutils_binutils_remove_faulty_patch.patch

$ patch –p1<  002-kconfig_resync_curses_check_with_Linux_kernel.patch

5、   配置并编译crosstool-ng-1.8.1

$ ./configure --prefix=/home/linux/s3c2410-2.6.35/toolchain/toolchain-install

$ make

$ make install

6、    配置工具链选项

$ cd  ../toolchain-build

$ cp ../crosstool-ng-1.8.1/samples/arm-unknown-linux-gnueabi/*   ./

$ mv crosstool.config .config

$ ../toolchain-install/bin/ct-ng menuconfig

Paths and misc options  --->   

(${HOME}/src) Local tarballs directory

(${HOME}/x-tools/${CT_TARGET}) Prefix directory

修改为

Paths and misc options  --->    

(/home/linux/Downloads) Local tarballs directory  //源码包存放路径

(/home/linux/toolchain) Prefix directory    //工具生成后的安装路径

 

 

Target options  --->

(armv4t) Architecture level

(arm9tdmi) Emit assembly for CPU

(arm920t) Tune for CPU

 

C compiler  --->

[ ] Java

 

Operating System  --->

[ ]     Check installed headers

 

Paths and misc options  --->  

(1) Number of parallel jobs

 

Toolchain options  --->

(none) Tuple's vendor string

 

C compiler  --->

(crosstool-NG-${CT_VERSION}-farsight) gcc ID string

 

修改.config文件,将文件中的2.6.33.2全部改为2.6.35(Linux内核版本号)

7、    目标代码准备

拷贝下面文件到/home/linux/Downloads目录下:

binutils-2.19.1.tar.bz2 

gcc-4.3.2.tar.bz2 

glibc-ports-2.9.tar.bz2 

linux-2.6.35.tar.bz2   

ncurses-5.7.tar.gz

dmalloc-5.5.2.tgz       

gdb-6.8.tar.bz2   

gmp-4.3.2.tar.bz2        

ltrace_0.5.3.orig.tar.gz 

strace-4.5.19.tar.bz2

duma_2_5_15.tar.gz      

glibc-2.9.tar.bz2 

libelf-0.8.13.tar.gz    

mpfr-2.4.2.tar.bz2

Sstrip.c

8、   工具链编译

$ ../toolchain-install/bin/ct-ng build

这个过程比较时间比较长

9、   环境变量的添加

修改文件/etc/bash.bashrc添加如下内容

export PATH=$PATH:/home/linux/toolchain/bin

重启配置文件

$ source bash.bashrc

10、  工具链的测试

       $ arm-none-linux-gnueabi-gcc –v

       Using built-in specs.

Target: arm-none-linux-gnueabi

Configured with: /home/linux/s3c2410-2.6.35/toolchain/toolchain-build/targets/src/gcc-4.3.2/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-none-linux-gnueabi --prefix=/home/linux/toolchain --with-sysroot=/home/linux/toolchain/arm-none-linux-gnueabi//sys-root --enable-languages=c,c++,fortran --disable-multilib --with-arch=armv4t --with-cpu=arm9tdmi --with-tune=arm920t --with-float=soft --with-pkgversion=crosstool-NG-1.8.1-none --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --with-gmp=/home/linux/s3c2410-2.6.35/toolchain/toolchain-build/targets/arm-none-linux-gnueabi/build/static --with-mpfr=/home/linux/s3c2410-2.6.35/toolchain/toolchain-build/targets/arm-none-linux-gnueabi/build/static --enable-threads=posix --enable-target-optspace --with-local-prefix=/home/linux/toolchain/arm-none-linux-gnueabi//sys-root --disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long

Thread model: posix

gcc version 4.3.2 (crosstool-NG-1.8.1-none)

这个时候我们的工具链就生成了

你可能感兴趣的:(assembly,工具,fortran,compiler,patch,linux内核)