阅读:2362回复:0
(转) linux 2.4 交叉编译工具链 制作详解
Linux kerel 2.4
本部分由同济大学软件学院沈猛整理,转载请注明出处。 (本文根据网上资料修改而成,确保每步都可以正确执行。) 在Host机上建立arm-linux-gcc交叉编译环境: 我们采用的源代码版本和下载路径如下: binutils-2.14.tar.gz ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz gcc-core-2.95.3.tar.gz ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gz gcc-g++2.95.3.tar.gz ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-g++-2.95.3.tar.gz glibc-2.2.4.tar.gz ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.4.tar.gz glibc-linuxthreads-2.2.4.tar.gz ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.4.tar.gz linux-2.4.21.tar.gz (linux- 2.4.19) ftp://ftp.kernle.org/pub/....../v2.4/linux-2.4.21.tar.gz patch-2.4.21-rmk1.gz ftp://ftp.arm.linux.org.u......v2.4/patch-2.4.21-rmk1.gz (patch-2.4.19-rmk7) 我们在bash 下工作,先设定一些变量: # export VBINUTILS=2.14 # export VGCC=2.95.3 # export VGLIBC=2.2.4 # export VLINUX=2.4.21 # export VLINUX_PATCH=rmk1 # export PREFIX=/armtools # export TARGET=arm-linux 我们的工作路径是(用root用户登录): ~/tars/SourceDir ~/tars/BuildDir /armtools # cd ~ # mkdir –p tars/SourceDir # mkdir tars/BuildDir # mkdir /armtools tars --------------- 在这里放我们的下载来的.tar.gz 文件 SourceDir ------ 这个临时目录放我们解压缩后的源文件 BuildDir --------- 我们在这里编译 armtools -------- 把arm-linux 交叉编译环境的安装在这里 1. 1安装linux 的头文件当你为不同类型的ARM编译gcc,或编译不同版本的kernel,或交叉编译gcc 时都需要一套不同的linux头文件。 (1) 解压缩,打补丁 # cd ~/tars/SourceDir # tar -zxf ../linux-$VLINUX.tar.gz # mv linux-2.4.21 linux # cd linux # zcat ../../patch-$VLINUX-$VLINUX_PATCH.gz | patch -p1 (2) 清理一下$ make mrproper (3) 修改Makefile 将Makefile中ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) 这一行注释掉, 并加一行ARCH=arm。修改后象这样: ARCH=arm # ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) 然后运行 # make menuconfig 进行适当配置 此版本内核中,在System type 里面根据板子设置( )ARM system type (4) 建立连接 # cd ~/tars/SourceDir/linux/include/asm 如果里面没有proc 和 arch两个链接文件的话,运行下面两个命令。 如果有,就跳过下两个命令。 # ln –s proc-armv proc # ln –s arch-*(*代表板子名称) arch (5) 拷贝头文件 # mkdir -p $PREFIX/$TARGET/include # cd ~/tars/SourceDir/linux/ # cp -dR include/linux $PREFIX/$TARGET/include # cp -dR include/asm-arm $PREFIX/$TARGET/include/asm (6) 为gcc 建立一个linux kernel 头文件的连接。 # cd $PREFIX/$TARGET # ln -s include sys-include 1.2 编译安装binutils 这里用不到前面准备的linux 头文件 # cd ~/tars/SourceDir # tar -zxf ../binutils-$VBINUTILS.tar.gz # cd ~/tars/BuildDir # mkdir binutils # cd binutils #../../SourceDir/binutils-$VBINUTILS/configure --target=$TARGET --prefix=$PREFIX # make all install (3) export PATH=$PREFIX/bin:$PATH 1.3 编译安装gcc 的c 编译器 (1) 解压缩 # cd ~/tars/SourceDir # tar -zxf ../gcc-core-$VGCC.tar.gz (2) 修改gcc 的t-linux 文件 # cd gcc-$VGCC/gcc/config/arm # mv t-linux t-linux-orig # sed 's/TARGET_LIBGCC2_CFLAGS = /TARGET_LIBGCC2_CFLAGS = -D__gthr_posix_h -Dinhibit_libc/' < t-linux-orig > t-linux-core # cp ./t-linux-core ./t-linux (3) 编译 # cd ~/tars/BuildDir #mkdir gcc-core # cd gcc-core # ../../SourceDir/gcc-$VGCC/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c --disable-shared --disable-threads # make all install 1.4 编译安装glibc (1) 解压缩 # cd ~/tars/SourceDir # tar -zxf ../glibc-$VGLIBC.tar.gz # cd glibc-$VGLIBC # tar -zxf ../../glibc-linuxthreads-$VGLIBC.tar.gz (2) 编译 # cd ~/tars/BuildDir # mkdir glibc # cd glibc # CC=$TARGET-gcc AR=$TARGET-ar RANLIB=$TARGET-ranlib \ ../../SourceDir/glibc-$VGLIBC/configure \ --host=$TARGET --prefix=$PREFIX/$TARGET --enable-add-ons # make all install (这步花了很长时间) 1.5.编译安装gcc 的c, c++ 编译器 (1) 恢复t-linux 文件 # cd ~/tars/SourceDir/gcc-$VGCC/gcc/config/arm/ # cp t-linux-orig t-linux (2) 解压缩c++ 编译器 # cd ~/tars/SourceDir/ # tar -zxf ../gcc-g++-$VGCC.tar.gz # cd ~/tars/BuildDir # mkdir gcc # cd gcc (3) 编译 # ../../SourceDir/gcc-$VGCC/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c,c++ --with-included-gettext # make all install 注:如果你下载的是filename.tar.bz2,你可以用如下命令之一解压缩,第三种方式在任何系统中都好使。 第一种方式: # tar -jxf filename.tar.bz2 第二种方式: # tar -Ixf filename.tar.bz2 第三种方式: # bzip2 -dc filename.tar.bz2 | tar xf – 如果你是第一次制作arm-linux 交叉编译环境,强烈建议你用本文所使用的各个程序的版本。如果用其它版本,按照本文的方法可能会在编译的时候出问题。 生成的toolchain 大于150 兆,用如下方法压缩: # cd ~ # tar -cf armtools.tar /armtools (大小157399040) # bzip2 -z armtools.tar (大小32688701) 压缩后生成的armtools.tar.bz2 大概有30 几兆。 |
|
|