首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

创建ARM Linux交叉编译环境实践 01

创建ARM Linux交叉编译环境实践 01

一、准备工作
  首先需要一台运行Linux操作系统的PC以完成我们的编译工作。
  其次要准备如下一些源文件。
  1、源文件准备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 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 ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz patch-2.4.21-rmk1.gz # linux kernel patch for arm ftp://ftp.arm.linux.org.uk/pub/l ... atch-2.4.21-rmk1.gz
  binutils-2.14.tar.gz这个压缩包包含有ld,ar,as等一些产生或者处理二进制文件的工具。
  gcc-core-2.95.3.tar.gz这个压缩包是GCC的主体部分,GCC是GNU Compiler Collection的简称,顾名思义,它能够编译很多种高级语言,例如C、C++,Java等,而这个压缩包中含有C编译器,及公共部分,而对其他语言的支持,采用另外的压缩包单独发布。
  gcc-g++2.95.3.tar.gz,这个压缩包就是为使GCC能够编译C++程序而单独发布的。
  glibc-2.2.4.tar.gz,libc是很多用户层应用都要用到的库,kernel和bootloader不需要这个库的支持,这个库主体部分封装在这个压缩包内。
  glibc-linuxthreads-2.2.4.tar.gz,这是Libc用于支持Posix线程而单独发布的一个压缩包。
  linux-2.4.21.tar.gz,这个压缩包就是Linux的内核。
  patch-2.4.21-rmk1.gz,这个压缩包是用来给Linux内核打补丁,以使其可以支持arm的硬件平台。
  2、工作目录搭建我们创建如下的目录树结构mkdir arm mkdir tool-chain mkdir build-dir mkdir src-dir mkdir setup-dir mkdir kernel
  arm这个目录是我们的最顶层工作目录,我们所有的编译工作都在这里完成。
  tool-chain这个目录是我们交叉编译工具的安装位置,它下面的bin子目录存放我们创建好的编译器,汇编器,连接器,以及编译好的C库也会安装到这个目录之下。
  setup-dir这个目录用来存放我们下载的压缩包。
  src-dir这个目录用于存放binutils,gcc,glibc解压之后的源文件。
  kernel这个目录用来存放内核文件,对内核的配置、编译工作将在这个目录中完成。
  build-dir用来编译src-dir中的源文件,具体就是binutils,gcc,glibc的编译工作将在这个目录下完成。这种源文件目录和编译目录分离的编译方式是GNU所推荐的。
  cd ./src-dir tar –xvzf ……/setup-dir/ binutils-2.14.tar.gz tar –xvzf ……/setup-dir/ gcc-core-2.95.3.tar.gz tar –xvzf ……/setup-dir/ glibc-2.2.4.tar.gz tar –xvzf ……/setup-dir/ glibc-linuxthreads-2.2.4.tar.gz –directory=./glibc-2.2.4
  这样我们在src-dir目录下就形成了3个源文件目录binutils-2.14,gcc-core-2.95,3,glibc-2.2.4,其中分别存放着binutils tools,gcc,glibc的源代码。接下来我们到build-dir中创建3个与这三个源文件目录对应的编译目录。
  cd ……/build-dir mkdir ……/build-dir/build-binutils mkdir ……/build-dir/build-gcc mkdir ……/build-dir/build-glibc
  我们将在这三个目录中完成对binutils tools, gcc, glibc的配置和编译工作。下面还要把内核文件解压到kernel目录下,并打补丁。
  cd ……/kernel tar –xvzf ……/setup-dir/ linux-2.4.21.tar.gz cd ./linux-2.4.21 patch –p1 < ……/……/setup-dir/ patch-2.4.21-rmk1
  二、开始创建
  1、 确定几个系统变量cd ……/……/ export TARGET=arm-linux export PREFIX=……/arm/tool-chain export TARGET_PREFIX=$PREFIX/$TARGET export KERNEL_SOURCE_LOCATION=……/arm/kernel/linux-2.4.21 export PATH=$PREFIX/bin:$PATH
  几个系统变量经常要用到,TARGET定义了目标机,PREFIX是工具链的安装目录,KERNEL_SOURCE_LOCATION是内核文件位置。
  2、 创建binutils运行如下命令来创建binutils cd ./build-dir/build-binutils configure ……/……/src-dir/binutils-2.14/configure –target=$TARGET –prefix=$PREFIX make make install这时$PREFIX/bin下创建了一些文件,包括arm-linux-ld,arm-linux-as等。
  3、 编译内核
  cd ……/……/kernel/linux-2.4.21
  改Makefile文件使ARCH = arm CROSS_COMPILE=arm-linux-
  make menuconfig在System Types中选择正确的硬件类型
  make dep
返回列表