OpenWRT文章翻译之(一)----OpenWRT Buildroot简介(转)
OpenWRT文章翻译之(一)----OpenWRT Buildroot简介
Buildroot简介
话说OpenWRT Buildroot 之前,先说一下Buildroot是什么东西吧。Buildroot实际上是一个编译的脚本,它包括一组Makefiles文件和补丁文件,主要用于简单系统或嵌入式系统的编译,支持多种CPU的架构,其中包括x86、ARM、MIPS和PowerPC等。它可以生成交叉编译的工具链,文件系统,内核镜像和bootloader镜像等。相关的内容可以到Buildroot的主页去查看http://www.buildroot.org
OpenWRT Buildroot简介
那么OpenWRT Buildroot又是什么玩儿呢?实际上也是一个Buildroot,只是它是专门为编译OpenWRT而移植过来的编译OpenWRT系统的脚本,而至于为什么它叫OpenWRT Buildroot,那是因为OpenWRT移植过来的时候,做了大量的修改!OpenWRT Buildroot的主要任务就是生成交叉编译链和文件系统。
交叉编译工具链
交叉编译链是一套交叉编译工具,它可以为你的目标系统编译源代码文件。那么为什么叫交叉编译工具链呢?因为大部分嵌入式或是微型的小系统,由于CPU或是Flash的限制,或是避免浪费,都不会把编译工具链放到系统里面去,当然X86的例外,嘿嘿。那我的代码怎么才能编译到嵌入式系统里面呢?我们通常都是在X86通用Linux系统上面使用特定的工具,编译生成目标系统可以执行的代码,再上传到目标系统。而这个编译平台和目标平台不同的特定的编译工具链即是前面所讲的交叉编译工具链。
一个交叉编译工具链主要包括三部分:编译器(gcc),二进制工具binutils(汇编器、链接器等)和标准的C函数库(GNU Libc或uClibc)。
它主要有两个特征:
1.可以运行在X86通用CPU架构之上;
2.可以编译生成特定CPU架构(ARM,MIPS等)的代码。
OpenWRT交叉编译工具链使用的标准C函数库是uClibc,一个专为嵌入系统设计的小型标准C函数库。所以即便的是使用ALIX.2D2的板子,这个也是X86的CPU,使用OpenWRT系统,你在X86架构Linux上编译的东西,也无法在OpenWRT上面运行。
好吧,我承认有点偏题了。。。
OpenWRT Buildroot的真实身份
有同鞋讲,网上有一票gcc,和binutils,uClibc的源代码,我不能自己下载,然后自己编译么?答案是可以滴,但是~~如果你不怕麻烦的话(原文翻译,老外真是有水平啊哈,了解大家都怕麻烦的特点,然后拿出来放大)。前面我们提过OpenWRT Buildroot是许多Makefiles文件和补丁文件的集合,它会为我们自动配置这个源代码,为每个版本打上已知的补丁,最后生成确实可用的交叉编译工具链。
除此之外,它还可以生成系统,这个篇幅比例不太合适啊,OpenWRT Buildroot两个主要任务的其中一个怎么介绍这么少呢?没有办法,原文就是酱紫的。。。
最后表达一下对OpenWRT Buildroot的景仰之情,虽然OpenWRT Buildroot主要是面向开发都的,但是一般没有专业技能基础的终端用户也可以使用它编译生成你自己的系统固件。