教你如何学习ARM-Linux交叉编译环境

时间:2011-09-04

   什么是交叉编译呢?在回答这个问题前,我们先解释两个概念:

  主  机:运行编译过程的计算机。

  目标机:运行编译结果(可执行文件)的计算机。

  建立一个脚本用于设置变量和建立必要的目录,在编译前,先运行。 corss.env。 其内容如下:

  cross.env

  export WORK_DIR=/work/cross

  export ROOTFS_DIR=$WORK_DIR/rootfs

  export ARCH=arm

  if [ ! -e "$ROOTFS_DIR/usr/local/include" ]; then mkdir -p $ROOTFS_DIR/usr/local/include;fi;

  if [ ! -e "$ROOTFS_DIR/usr/local/lib" ]; then mkdir -p $ROOTFS_DIR/usr/local/lib; fi;

  if [ ! -e "$ROOTFS_DIR/usr/local/etc" ]; then mkdir -p $ROOTFS_DIR/usr/local/etc; fi;

  if [ ! -e "$ROOTFS_DIR/usr/lib" ]; then mkdir -p $ROOTFS_DIR/usr/lib; fi;

  if [ ! -e "$ROOTFS_DIR/usr/etc" ]; then mkdir -p $ROOTFS_DIR/usr/etc; fi;

  if [ ! -e "$ROOTFS_DIR/usr/bin" ]; then mkdir -p $ROOTFS_DIR/usr/bin; fi;

  if [ ! -e "$ROOTFS_DIR/usr/share" ]; then mkdir -p $ROOTFS_DIR/usr/share; fi;

  if [ ! -e "$ROOTFS_DIR/usr/man" ]; then mkdir -p $ROOTFS_DIR/usr/man; fi;

  我们的工作路径是:

  ~ -- ------- tars -- ----- SourceDir

  | \----- BuildDir

  \------ armtools

  tars

  在这里放我们的来的 .tar.gz 文件

  SourceDir

  这个临时目录放我们解压缩后的源文件

  BuildDir

  我们在这里编译

  armtools

  把arm-linux 交叉编译环境的安装在这里

  安装linux 的头文件

  解压缩,打补丁

  cd ~/tars/SourceDir

  tar -zxf /linux-2.4.5.tar.gz

  cd linux

  zcat //patch-2.4.5-rmk7.gz | patch -p1

  修改 Makefile 建议先删除 .config 文件, 否这以后会遇到麻烦。

  将Makefile中ARCH := ……改为:ARCH=arm #

  执行一下 make clean

  建立连接

  如果是LART板子

  make ARCH=arm lart_config

  cd include/asm-arm

  rm -f arch proc

  ln -s arch-sa1100 arch

  ln -s proc-armv proc

  如果是clps711x的CPU

  cd include/asm-arm

  rm -f arch proc

  ln -s arch-clps711x arch

  ln -s proc-armv proc

  为你自己的板子定制:

  make ARCH=arm menuconfig

  make dep

  拷贝头文件

  cp -dR include/linux ~/armtools/arm-linux/include

  cp -dR include/asm-arm ~/armtools/arm-linux/include/asm

  编译安装binutils

  解压缩

  cd ~/tars/SourceDir

  tar -zxf /binutils-2.11.gz

  编译

  cd ~/tars/BuildDir

  mkdir binutils

  cd binutils

  //SourceDir/binutils-2.11/configure --target=arm-linux --prefix=~/armtools

  make all install

  编译安装gcc 的c 编译器

  解压缩

  cd ~/tars/SourceDir

  tar -zxf /gcc-2.95.3.tar.gz

  修改gcc 的t-linux 文件在t-linux文件中的TARGET_LIBGCC2_CFLAGS上加上__gthr_posix_h inhibit_libc

  cd gcc-2.95.3/ 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

  编译

  cd ~/tars/BuildDir

  mkdir gcc-core

  cd gcc-core

  //SourceDir/gcc-2.95.3/configure \

  --target=arm-linux \

  --prefix=~/armtools \

  --enable-languages=c \

  --with-local-prefix=~/armtools/arm-linux \

  --without-headers \

  --with-newlib \

  --disable-shared

  make all install

  编译安装 glibc

  解压缩

  cd ~/tars/SourceDir

  tar -zxf /glibc-2.2.3.tar.gz

  cd glibc-2.2.3

  tar -zxf //glibc-linuxthreads-2.2.3.tar.gz

  编译

  cd ~/tars/BuildDir

  mkdir glibc

  cd glibc

  CC=arm-linux-gcc AR=arm-linux-ar RANLIB=arm-linux-ranlib \

  //SourceDir/glibc-2.2.3/configure \

  --host=arm-linux \

  --prefix=~/armtools/arm-linux \

  --enable-add-ons \

  --with-headers=~armtools/arm-linux/include

  make all install

  编译安装gcc 的c, c 编译器

  恢复t-linux 文件

  cd ~/tars/BuildDir

  mkdir gcc

  cd gcc

  cp //SourceDir/gcc-2.95.3/gcc/config/arm/t-linux-orig \

  //SourceDir/gcc-2.95.3/gcc/config/arm/t-linux

  编译

  //SourceDir/gcc-2.95.3/configure \

  --target=arm-linux \

  --prefix=~/armtools \

  --enable-languages=c,c \

  --with-local-prefix=~armtools/arm-linux

  make all install



  
上一篇:Linux系统的基本调用语句
下一篇:触摸屏的相关简介

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料