- 论坛徽章:
- 0
|
1.主机环境AS4 gcc-3.4.6
因为gcc、binutils、glibc以及linux内核头文件均有各自的版本号,并不是任意组合都可以编译成功并最终建立一个交叉编译环境的。一些可以直接利用的组合方式,可以通过该网址查看:
http://kegel.com/crosstool/crosstool-0.43/buildlogs/
当我们选择了某一种组合以后,仍然需要对源代码做相应的修改,才能最终编译成功。
本文使用的组合为gcc-3.4.1+glibc-2.3.3+binutils-2.15+linux-2.6.8
http://kegel.com/crosstool/crosstool-0.43.tar.gz
2.交叉编译环境的建立过程
为了更清晰的描述交叉环境的建立过程,在此对各个源码包的作用进行说明。
binutils-2.15.tar.gz:这个压缩包包含有ld,ar,as等一些产生或者处理二进制文件的工具。其主要目的是为GNU系统提供汇编和连接工具等。
gcc-3.4.1.tar.gz:这个压缩包主要是为GNU系统提供C 编译器。现在支持多种语言,这其中包括C/C++、Fortran、Java、Objective-C、Ada等。
glibc-2.3.3tar.gz:Libc是很多用户层应用都要用到的库,用于定义系统调用和其它一些基本的函数调用。
glibc-linuxthreads-2.3.3.tar.gz:这是Libc用于支持Posix线程而单独发布的一个压缩包。
linux-2.6.8.tar.bz2:这个压缩包就是Linux的内核,在编译glibc时,要用到Linux内核中的include目录的内核头文件。3.交叉编译工具的建立不允许在根用户下进行编译
1)下载以上源文件放在/home/mlch/download/目录下(否则编译会会找不到源文件)
2)建立/opt/crosstool 目录改变所有者chown mlch /opt/crosstool
3)tar zxvf crosstool-0.43.tar.gz cd crosstool-0.43
3)vi demo-arm-softfloat.sh 修改如下:
1 #!/bin/sh
2 # This script has one line for each known working toolchain
3 # for this architecture. Uncomment the one you want.
4 # Generated by generate-demo.pl from buildlogs/all.dats.txt
5
6 set -ex
7 TARBALLS_DIR=$HOME/downloads//源文件所在目录
8 RESULT_TOP=/opt/crosstool //目标生成文件所在目录
9 export TARBALLS_DIR RESULT_TOP
10 GCC_LANGUAGES="c,c++"
11 export GCC_LANGUAGES
12
13 # Really, you should do the mkdir before running this,
14 # and chown /opt/crosstool to yourself so you don't need to run as root.
15 mkdir -p $RESULT_TOP
16
17 eval `cat arm-softfloat.dat gcc-3.4.1-glibc-2.3.3.dat` sh all.sh --notes t //可修改为相应的版本
18
19 echo Done.
4)vi arm-softfloat.dat修改如下
1 KERNELCONFIG=`pwd`/arm.config
# 2 TARGET=arm-softfloat-linux-gnu
2 TARGET=arm-linux(注意不能是arm-linux-)
3 TARGET_CFLAGS="-O"
4 GCC_EXTRA_CONFIG="--with-float=soft"
5 GLIBC_EXTRA_CONFIG="--without-fp"
4. su mlch
sh demo-arm-softfloat.sh
编译过程可能出现权限不够的问题可切换到根用户改变权限再用自己的用户编译
最后在/opt/crosstool/生成完整的交叉编译工具
ok 试一下hello world ......
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/70379/showart_1988607.html |
|