i.过程概括
1.下载源文件、补丁和建立编译的目录
2.建立内核头文件
3.建立二进制工具(binutils)
4.建立初始编译器(bootstrap gcc)
5.建立c库(glibc)
6.建立全套编译器(full gcc)
<准备工作>
ii.源码版本选择:
选择你所需的glibc版本,然后查看该版本中的INSTALL说明,根据要求下载相应的
gcc版本和 binutils版本
binutils-2.22、gcc-4.7.0、gmp-5.0.2、mpfr-3.1.0、glibc-2.12.2、glibc-linuxthreads-2.5、glibc-ports-2.12.1、gdb-7.4、linux-2.6.39
源码依赖关系:
gcc:
mpc:(可使用系统自带的库)
gmp:mpfr(可使用系统自带的库)
下载地址:ftp://ftp.gnu.org/gnu/、ftp://ftp.kernel.org/pub/linux/kernel
中科大:http://oss.ustc.edu.cn/
iii.主机环境
建立源码目录和编译目录,导出相关变量:TARGET、PREFIX、TARGET_PREFIX、PATH
#!/bin/sh
#exportit.sh
#exportenvironments for cross-tool-chain
exportARMDIR=/home/peter/workspace/arm
exportTARGET=arm-none-linux-gnueabi
exportHOST_PC=i686-pc-linux-gnu
exportHOST_ARM=arm
exportPREFIX=${ARMDIR}/cross-chains/
exportTARGET_PREFIX=${ARMDIR}/cross-chains/arm-linux
exportPATH=${PREFIX}/bin:${PATH}
exportSRC=${ARMDIR}/src
exportBUILD=${ARMDIR}/build
mkdir-p $SRC $BUILD $PREFIX
cd$BUILD && mkdir binutils bgcc gcc glibc gdb gdbserver
脚本执行方式:source exportit.sh
iii.解压src目录下的压缩包
#!/bin/sh
#extract_here.sh
echo"start extrating files from the tar balls..."
mkdirtars
files=$(ls)
forFILE in $files
do
set- `echo "$FILE"|awk -F. '{print $NF}'`
case"$1" in
bz2)
tar-jxvf $FILE;;
gz)
tar-zxvf $FILE;;
xz)
tar-Jxvf $FILE;;
*)
;;
esac
done
mv*.bz2 tars/;mv *.gz tars/;mv *.xz tars/
在src路径下运行extract_here.sh,解压完成后压缩包被移至tars目录下
<开始编译>
i.binutils
cd$BUILD/ binutils
$SRC/binutils-2.22/configure --target=$TARGET --prefix=$PREFIX \
[otheroptions]
make&& make install
--------------------------------------------------------------------------------------------------------------------------------------------------
#other options
--disable