Buildroot文章翻译

来源:互联网 发布:淘宝配送地址填写海外 编辑:程序博客网 时间:2024/06/05 06:09

OpenWRT文章翻译之(一)----OpenWRT Buildroot简介

原文地址:http://wiki.openwrt.org/about/toolchain

Buildroot简介

话说OpenWRT Buildroot 之前,先说一下Buildroot是什么东西吧。Buildroot实际上是一个编译的脚本,它包括一组Makefiles文件和补丁文件,主要用于简单系统或嵌入式系统的编译,支持多种CPU的架构,其中包括x86ARMMIPSPowerPC等。它可以生成交叉编译的工具链,文件系统,内核镜像和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 LibcuClibc)。

它主要有两个特征:

    1.可以运行在X86通用CPU架构之上;

    2.可以编译生成特定CPU架构(ARM,MIPS)的代码。

OpenWRT交叉编译工具链使用的标准C函数库是uClibc,一个专为嵌入系统设计的小型标准C函数库。所以即便的是使用ALIX.2D2的板子,这个也是X86CPU,使用OpenWRT系统,你在X86架构Linux上编译的东西,也无法在OpenWRT上面运行。

好吧,我承认有点偏题了。。。

OpenWRT Buildroot的真实身份

有同鞋讲,网上有一票gcc,和binutilsuClibc的源代码,我不能自己下载,然后自己编译么?答案是可以滴,但是~~如果你不怕麻烦的话(原文翻译,老外真是有水平啊哈,了解大家都怕麻烦的特点,然后拿出来放大)。前面我们提过OpenWRT Buildroot是许多Makefiles文件和补丁文件的集合,它会为我们自动配置这个源代码,为每个版本打上已知的补丁,最后生成确实可用的交叉编译工具链。

除此之外,它还可以生成系统,这个篇幅比例不太合适啊,OpenWRT Buildroot两个主要任务的其中一个怎么介绍这么少呢?没有办法,原文就是酱紫的。。。

最后表达一下对OpenWRT Buildroot的景仰之情,虽然OpenWRT Buildroot主要是面向开发都的,但是一般没有专业技能基础的终端用户也可以使用它编译生成你自己的系统固件。


OpenWRT文章翻译之(二)----OpenWRT Buildroot安装

原文地址:http://wiki.openwrt.org/doc/howto/buildroot.exigence

 

简介

OpenWRT Buildroot是创建OpenWRT系统首选的工具链。OpenWRT Buildroot要求使用GNU Linux的发行版本,独立安装到PC机上,或是虚拟机里面都行。

但是Cygwin则可能会出错,而BSD或是MacOSX,有可能使用OpenWRT Buildroot成功生成目标系统镜像,但是这并不能保存生成的镜像的正确性,汗一个,看来大家还是使用原版的Linux吧,因为这个水有点深了,,,

系统需求

1. 350MB的空间用于下载源代码文件

2. 3~4GB空间用于生成交叉编译工具链和OpenWRT系统镜像.

安装过程

        1. 安装svn,这个是用来获取服务器的OpenWRT源代码的

下面就按Ubuntu的来安装吧,其它版本的自己Google,百度一下吧

sudo apt-get update

sudo apt-get install subversion build-essential

build-essential好像是安装gcc之类的编译器跟环境,subversion,就是svn

 

        2. 通过svn下载OpenWRT的源代码

mkdir ~/openwrt

cd openwrt

svn co svn://svn.openwrt.org/openwrt/trunk/

cd trunk

包括OpenWRT Buildroot脚本的OpenWRT源代码会下载到trunk文件夹里面。

 

        3. 下载安装feeds脚本

这一项是可选的,不过feeds也是很有用的一个工具,可以往OpenWRT里面添加软件包,安装方法如下:

./script/feeds update -a

./script/feeds install -a

 

        4. 检查使用Buildroot编译OpenWRT源代码所需要安装的软件包,进入源代码根目录,运行下面三条语句中任意一条

make defconfig

make prereq

make menuconfig

检查之后,它会列出系统需要安装的软件包,根据这个列表来安装编译OpenWRT所需的软件。

下面仅列出Ubuntu所需要安装的包

Ubuntu:

$ sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk flex

Ubuntu 9.10,需要安装下列软件包(30-03-2011):

$ sudo apt-get install gcc-multilib bison autoconf screen gcc g++ binutils patch bzip2 flex make gettext unzip libc6 git-core

Ubuntu 11.10:

$ sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt

Ubuntu 12.04LTS:

$ sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl

Ubuntu 64bit:

$ sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext

下面是各个Linux发行版本编译OpenWRT所需要安装的软件包列表

Prerequisite DebianSuseRed HatOS X (via MacPorts)FedoraNetBSD

asciidoc asciidocasciidocasciidocasciidocasciidoc?

bash bash bash ? bash ? bash

binutils binutilsbinutilsbinutilsbinutilsbinutils?

bzip2 bzip2 bzip2 bzip2 bzip2 bzip2 ?

fastjar fastjarfastjarlibgcjfastjarlibgcj?

flex flex flex ? flex flex ?

git git-core git-core ? ? ? ?

g++ g++ gcc-c++ gcc-c++?gcc-c++?

gcc gcc gcc gcc ? gcc ?

getopt util-linuxutil-linux?getopt?getopt

GNU awk gawk gawk gawk gawk gawk ?

gtk2.0-dev libgtk2.0-dev?gtk2-develgtk2gtk2-devel?

intltool-update intltoolintltoolintltoolintltoolintltool?

jikes jikes ? jikes ?

libz, libz-dev zlib1g-devzlib-develzlib-develzlibzlib-devel?

make make make ? gmake make gmake

ncurses libncurses5-devncurses-develncurses-develncursesncurses-devel?

openssl/ssl.h libssl-devlibopenssl-developenssl-developensslopenssl-devel?

patch patch patch ? patchutils patch?

perl-ExtUtils-MakeMaker perl-modulesperl-ExtUtils-MakeMakerperl-ExtUtils-MakeMakerp5-extutils-makemakerperl-ExtUtils-MakeMaker?

python2.6-dev python2.6-devpython-devel?python26??

rsync rsync rsync ? rsync rsync ?

ruby ruby ruby ? ruby ruby ?

sdcc sdcc sdcc ? sdcc sdcc ?

unzip unzip unzip ? unzip unzip ?

wget wget wget wget wget wget ?

working-sdcc ?? ? ?

xgettext gettext?? gettextgettext?

xsltproc xsltproclibxslt?libxsltlibxslt?

zlib, zlib-static zlib1g-devzlib-devel?? ? ?



0 0
原创粉丝点击