User Tools

Site Tools


zh-cn:about:toolchain

OpenWrt Buildroot – About

OpenWrt Buildroot 包含了一系列 Makefiles 和 patches, 方便在嵌入式系统上生成交叉编译工具链和 root 文件系统. 它是在Buildroot (http://www.buildroot.org/) 的基础上做了大量修改. 交叉编译工具链使用了一个轻巧的 C 标准库, uClibc (http://www.uclibc.org/).

交叉编译工具链是用来在你的系统上编译代码的工具集合. 其中包括编译器(这里用的是gcc / deb: gcc), 二进制工具, 比如汇编器和连接器(这里用了 binutils / deb: binutils ),以及c标准库C standard library(例如 GNU Libc, uClibc 或 dietlibc). 如果你用的是 PC, 你的编译工具链运行在 x86 处理器上, 生成的代码也是给 x86 处理器使用的. 大部分的 linix 操作系统里, 编译工具链用了 GNU libc 作为 C标准库. 这类编译工具链被成为 "host compilation toolchain", 通常, 把运行它的机器, 也就是用户用着的, 叫作 "host system". 编译工具链是由用户的发行版提供的, OpenWrt Buildroot 跟它一点关系都没有.

正如上面所说的, 编译工具链是在你系统里面执行, 并且为主机系统的处理器生成代码的. 但是你的嵌入式系统用着不同的处理器, 所以需要这样一个交叉编译工具链: 它运行在你的主机系统上, 但是产生的代码是用在你目标系统上, (和相关处理器 的 ISA). 举个例子, 如果你的主机系统是 x86 的, 而你的目标系统是 MIPS32, 你主机上普通的编译工具链运行在 x86 上, 产生代码也是给 x86 用的, 然而 交叉编译工具链运行在 x86 上, 生成的代码是给 MIPS32 用的.

你可能觉得奇怪, 既然可以手动编译gcc, binutils, uClibc等等所有工具, 干嘛还需要这样一个工具. 当然, 所有的事情你都可以亲自动手解决. 但是解决 gcc, binutils 配置选项和版本问题, 费时费力又不好玩. OpenWrt Buildroot 通过 Makefiles 把相关流程都自动化了, 并且通过一系列的 patch, 使得每个版本的gcc and binutils 都能正常运行在各种指令集架构的嵌入式系统之上.

虽然 OpenWrt Buildroot 主要面向开发者, 但是对于最终用户而言, 用它来编译一个定制版的固件, 也是很简单的.

相关文档

zh-cn/about/toolchain.txt · Last modified: 2012/12/18 17:04 (external edit)