如何为嵌入式开发建立交叉编译环境[2]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:


如果你不惯用环境变量的,你可以直接用绝对或相对路径。我如果不用环境变量,一般都用绝对路径,相对路径有时会失败。环境变量也可以定义在.bashrc文件中,这样当你logout或换了控制台时,就不用老是export这些变量了。

体系结构和你的TAEGET变量的对应如下表




你可以在通过glibc下的config.sub脚本来知道,你的TARGET变量是否被支持,例如:




$./config.sub  arm-linux
arm-unknown-linux-gnu

在我的环境中,config.sub 在 glibc-2.2.3/scripts 目录下。

网上还有一些 HOWTO 可以参考,ARM 体系结构的《The GNU Toolchain for ARM Target HOWTO》,PowerPC 体系结构的《Linux for PowerPC Embedded Systems HOWTO》等。对TARGET的选取可能有帮助。

4. 建立编译目录

为了把源码和编译时生成的文件分开,一般的编译工作不在的源码目录中,要另建一个目录来专门用于编译。用以下的命令来建立编译你下载的binutils、gcc和glibc的源代码的目录。




$cd $PRJROOT/build-tools
$mkdir build-binutils build-boot-gcc build-gcc build-glibc gcc-patch

build-binutils-编译binutils的目录
build-boot-gcc-编译gcc 启动部分的目录
build-glibc-编译glibc的目录
build-gcc-编译gcc 全部的目录
gcc-patch-放gcc的补丁的目录

gcc-2.95.3 的补丁有 gcc-2.95.3-2.patch、gcc-2.95.3-no-fixinc.patch 和gcc-2.95.3-returntype-fix.patch,可以从 http://www.linuxfromscratch.org/ 下载到这些补丁。

再将你下载的 binutils-2.10.1、gcc-2.95.3、glibc-2.2.3 和 glibc-linuxthreads-2.2.3 的源代码放入 build-tools 目录中

看一下你的 build-tools 目录,有以下内容:




$ls 
binutils-2.10.1.tar.bz2     build-gcc			gcc-patch
build-binutls            build-glibc 	        glibc-2.2.3.tar.gz
build-boot-gcc           gcc-2.95.3.tar.gz	glibc-linuxthreads-2.2.3.tar.gz



回页首


建立内核头文件

把你从 www.kernel.org 下载的内核源代码放入 $PRJROOT /kernel 目录

进入你的 kernel 目录:




$cd $PRJROOT /kernel

解开内核源代码




$tar -xzvf linux-2.4.21.tar.gz




$tar -xjvf linux-2.4.21.tar.bz2

小于 2.4.19 的内核版本解开会生成一个 linux 目录,没带版本号,就将其改名。




$mv linux linux-2.4.x

给 Linux 内核打上你的补丁




$cd linux-2.4.21
$patch -p1 < ../patch-2.4.21-rmk2

编译内核生成头文件

$make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig

你也可以用 config 和 xconfig 来代替 menuconfig,但这样用可能会没有设置某些配置文件选项和没有生成下面编译所需的头文件。推荐大家用 make menuconfig,这也是内核开发人员用的最多的配置方法。配置完退出并保存,检查一下的内核目录中的 include/linux/version.h 和 include/linux/autoconf.h 文件是不是生成了,这是编译 glibc 是要用到的,version.h 和 autoconf.h 文件的存在,也说明了你生成了正确的头文件。

还要建立几个正确的链接




$cd include
$ln -s asm-arm asm
$cd asm
$ln -s arch-epxa arch
$ln -s proc-armv proc

接下来为你的交叉编译环境建立你的内核头文件的链接




$mkdir -p $TARGET_PREFIX/include
$ln -s $PRJROOT/kernel/linux-2.4.21/include/linux  $TARGET_PREFIX/include/linux
$in -s $PRJROOT/kernel/linux-2.4.21/include/asm-arm  $TARGET_PREFIX/include/asm

也可以把 Linux 内核头文件拷贝过来用




$mkdir -p $TARGET_PREFIX/include
$cp -r $PRJROOT/kernel/linux-2.4.21/include/linux  $TARGET_PREFIX/include
$cp -r $PRJROOT/kernel/linux-2.4.21/include/asm-arm  $TARGET_PREFIX/include   



回页首


建立二进制工具(binutils)

binutils是一些二进制工具的集合,其中包含了我们常用到的as和ld。

首先,我们解压我们下载的binutils源文件。




$cd $PRJROOT/build-tools
$tar -xvjf binutils-2.10.1.tar.bz2

本文关键:如何为嵌入式开发建立交叉编译环境
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top