目 录构建嵌入式 Linux 系统1.取本实验相关的软件包到 ftp 下载以下软件包: 文件名备注binutils-2.16.1.tar.bz2 gcc-4.0.2.tar.bz2 glibc-2.3.6.tar.bz2 glibc-linuxthreads-2.3.6.tar.bz2 linux-2.6.15.4.tar.bz2 linux-libc-headers-2.6.12.0.tar.bz2 制作交叉编译工具链所需的源码包 crosstool-0.43.tar.gz制作交叉编译工具链的脚本和补丁 crosstool.tar.bz2已制作好的交叉编译工具链,需要解包到/opt 目录使用 linux-2.6.27.tar.bz2内核 2.6.27 patch-2.6.27-aka针对 2440 开发板制作的内核 patch zImage已编译好的内核,可直接下载到开发板 rootfs-basic.tar基本根文件系统打包,由于有设备文件,所以解包需要root 权限 rootfs-basic.cramfs采纳 cramfs 文件系统格式的基本根文件系统映像,可直接下载到开发板 busybox-1.9.1.tar.bz2busybox 源码包,嵌入式根文件系统基本命令集 sqlite-3.4.0.tar.gzsqlite 源码包,嵌入式数据库 libcgi-1.0.tar.gzlibcgi 源码包,用于编写 CGI 程序的 C函数库 qtopia-core-opensource-src-4.2.2.tar.gzQtopia Core 源码包,Qt 的嵌入式版本 2.交叉编译工具链要做嵌入式 Linux 开发,首先需要有交叉编译工具链(cross compiling toolchain),也就是在主机(x86 PC)上可编译生成目标板可执行文件(ARM 指令)的编译工具。和普通的编译工具链一样,交叉编译工具链也包括编译、链接、修改目标文件的各种程序,如 gcc、glibc、ld、gas、objdump、readelf 等等。交叉编译工具链本身也是需要编译生成的,要得到一套完整的交叉编译工具链需要编译以下源码包: binutils gcc glibc linux(内核) linux-libc-headers glibc-linuxthreads 这些源码包具有非常强的版本依赖关系,假如源码包的版本不匹配,在编译过程中会出现各种各样的问题,有些问题需要对源码做些修改或者打补丁,有些问题则是没有解决办法的,只能更换匹配较好的版本。编译的步骤也是比较复杂的,主要有以下几步: 0. 根据目标平台配置内核源代码,生成内核头文件 1. 编译 binutils 2. 编译器的自举(bootstrap),也就是先编译出 gcc 的部分功能(没有 glibc 支持,只有 C 编译器没有 C++编译器) 3. 编译 glibc 4. 编译完整的 gcc 幸运的是,已经有人写出了制作交叉编译器的脚本( http://www.kegel.com/crosstool ),该脚本中提供了一系列源码包...