Crosstool-ng制作交叉编译工具链:修订间差异

来自Ubuntu中文
跳到导航跳到搜索
Tonghuix留言 | 贡献
Tonghuix留言 | 贡献
无编辑摘要
第1行: 第1行:
'''之所以用crosstool-ng是因为crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者。crosstool的gcc版本只能到4.1.1,无法编译版本高于2.6.29的linux内核。而crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本,可用来编译最新内核。
之所以用crosstool-ng是因为crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者。crosstool的gcc版本只能到4.1.1,无法编译版本高于2.6.29的linux内核。而crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本,可用来编译最新内核。


编译的系统环境是 ubuntu 10.10 + crosstool-ng 1.11.1
;编译的系统环境是:ubuntu 10.10 + crosstool-ng 1.11.1


目标平台 ARMv4t, arm9tdmi'''
;目标平台:ARMv4t, arm9tdmi,s3c2440


= 配置ubuntu编译环境 =
= 配置ubuntu编译环境 =
第47行: 第47行:
  Paths and misc options  --->  
  Paths and misc options  --->  
     ......
     ......
     (${HOME}/src)  Local tarballs directory  # 这里可以指定制作编译器所需要的源码包的下载路径,可以修改成任意位置,但注意权限
     (${HOME}/src)  Local tarballs directory  # 指定制作编译器所需要的源码包的下载存放,可以修改成任意位置,请注意权限。现在指定到~/src下。
     ......
     ......
     (/opt/${CT_TARGET}) Prefix directory    # 制作好的编译器所放置的目录
     (/opt/${CT_TARGET}) Prefix directory    # 制作好的编译器所放置的目录
第60行: 第60行:
       (tonghuix) Tuple's vendor string  # 这里可以修改成你自己的个性化名称,最后会生成形如arm-yourname-linux-gnueabi这样的编译器前缀
       (tonghuix) Tuple's vendor string  # 这里可以修改成你自己的个性化名称,最后会生成形如arm-yourname-linux-gnueabi这样的编译器前缀


;修改以后就可以开始编译了。
;修改好以后就可以开始编译了。


= 自动下载和编译 =
= 自动下载和编译 =
第71行: 第71行:


经过大概3个小时的下载(2M ADSL小水管)和90分钟的编译过程,在/opt/下生成了arm-tonghuix-linux-gnueabi目录
经过大概3个小时的下载(2M ADSL小水管)和90分钟的编译过程,在/opt/下生成了arm-tonghuix-linux-gnueabi目录
;注:也可以提前下载好,放到~/src下,但请注意下载的文件名必须一致,否则会重新下载,下面是利用arm-unkown-linux-gnueabi模板生成交叉编译器所需要的源码文件列表
binutils-2.19.1.tar.bz2
dmalloc-5.5.2.tgz
duma_2_5_15.tar.gz
ecj-latest.jar
expat-2.0.1.tar.gz
gcc-4.3.2.tar.bz2
gdb-6.8.tar.bz2
glibc-2.9.tar.bz2
glibc-ports-2.9.tar.bz2
gmp-4.3.2.tar.bz2
libelf-0.8.13.tar.gz
linux-2.6.33.12.tar.bz2
ltrace_0.5.3.orig.tar.gz
mpfr-2.4.2.tar.bz2
ncurses-5.7.tar.gz
strace-4.5.19.tar.bz2


= 安装交叉编译器和测试 =
= 安装交叉编译器和测试 =


安装
安装
= 修改源码包的版本 =

2011年5月13日 (五) 17:17的版本

之所以用crosstool-ng是因为crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者。crosstool的gcc版本只能到4.1.1,无法编译版本高于2.6.29的linux内核。而crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本,可用来编译最新内核。

编译的系统环境是:ubuntu 10.10 + crosstool-ng 1.11.1
目标平台:ARMv4t, arm9tdmi,s3c2440

配置ubuntu编译环境

安装编译所需的包

 sudo apt-get install sed bash cut dpkg-dev bison flex patch texinfo automake m4 libtool stat cvs websvn tar gzip bzip2 lzma readlink libncuses5-dev bison flex texinfo automake libtool patch gcj cvs cvsd gawk -y

安装结束以后就可以用了。

如果后面出现编译错误,再增加相应的包即可

安装crosstool-ng

1. 首先从官方网站上下载crosstool-ng的源码包 http://ymorin.is-a-geek.org/download/crosstool-ng/crosstool-ng-1.11.1.tar.bz2
2. 将此源码包解压缩并编译安装
 tar xvjf crosstool-ng-1.11.1.tar.bz2
 cd crosstool-ng--1.11.1
 make
 sudo make install
3. 如果一切正常,则ct-ng命令就可以用了

注:编译的时候如果出现错误,可以利用apt-get的方式安装相应的包即可

配置自己的交叉编译器

crosstool-ng可以配置各种平台的交叉编译器,也可以构建符合自己实用条件的个性编译器。下面以ARM平台为例,制作具有一定通用性的交叉编译器。这里我们从一个现成的编译器配置开始,用例子里的arm-unknown-linux-gnueabi作为配置的基础,然后来做一个交叉编译器。

将crosstool-ng源码包中samples/arm-unknown-linux-gnueabi/下的crosstool.config拷贝到源码包主目录下,在源码包主目录下执行
cp samples/arm-unknown-linux-gnueabi/crosstool.config .config
然后执行:
ct-ng menuconfig
进入配置菜单,与linux内核很类似
在这里,我对以下各选项稍作修改
Paths and misc options  ---> 
    ......
    (${HOME}/src)   Local tarballs directory  # 指定制作编译器所需要的源码包的下载存放,可以修改成任意位置,请注意权限。现在指定到~/src下。
    ......
    (/opt/${CT_TARGET}) Prefix directory     # 制作好的编译器所放置的目录
Target options  --->
    Target Architecture (arm)  ---> # 注意看这项是不是ARM平台
    ......
    Floating point: (software)  ---> # 对于很多ARM架构CPU来说是不支持硬浮点运算的,所以选择软件方式有更好的兼容性
    ......
    [*] Use EABI                            # 是否实用EABI方式,对某些指令采用异常的方式来处理(如除法指令),建议选中
Toolchain options  --->
     ..... 
     (tonghuix) Tuple's vendor string  # 这里可以修改成你自己的个性化名称,最后会生成形如arm-yourname-linux-gnueabi这样的编译器前缀
修改好以后就可以开始编译了。

自动下载和编译

下面就可以开始编译了,默认情况下,源码包会从网络下载,会占用比较大的带宽,下载后总大小在200MB左右,下载好会放到 ~/src下。

开始编译

ct-ng build

经过大概3个小时的下载(2M ADSL小水管)和90分钟的编译过程,在/opt/下生成了arm-tonghuix-linux-gnueabi目录

注:也可以提前下载好,放到~/src下,但请注意下载的文件名必须一致,否则会重新下载,下面是利用arm-unkown-linux-gnueabi模板生成交叉编译器所需要的源码文件列表
binutils-2.19.1.tar.bz2
dmalloc-5.5.2.tgz
duma_2_5_15.tar.gz
ecj-latest.jar
expat-2.0.1.tar.gz
gcc-4.3.2.tar.bz2
gdb-6.8.tar.bz2
glibc-2.9.tar.bz2
glibc-ports-2.9.tar.bz2
gmp-4.3.2.tar.bz2
libelf-0.8.13.tar.gz
linux-2.6.33.12.tar.bz2
ltrace_0.5.3.orig.tar.gz
mpfr-2.4.2.tar.bz2
ncurses-5.7.tar.gz
strace-4.5.19.tar.bz2

安装交叉编译器和测试

安装

修改源码包的版本