<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="openwrt编译基本教程">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2011-01-11 09:12<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
openwrt编译基本教程


其实和重新编译linux核心差不多，对于新手来说最麻烦的恐怕是安装开发环境需要的软件了。

条件：1.PC一台，性能强点，性能好编译得就快。安装ubuntu 8.04中文版。（也可以装在虚拟机里）

2.宽带一条，需要速度好点，因为有很多软件包是网络下载后安装。

3.耐心和时间。



编译流程:

1.安装好ubuntu8.04中文版本，搞定网络连接。

以非root用户登陆，打开&ldquo;应用程序----附件----终端&rdquo;。

2.开发环境安装。

需要的软件有gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev

安装命令:




    
sudo apt-get  install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev




复制代码


3.系统其他软件更新




    
sudo apt-get update




复制代码


更新后重新启动。

4.获取基本安装包，更新




    
svn checkout svn://svn.openwrt.org/openwrt/trunk

    
cd trunk

    
./scripts/feeds update -a

    
./scripts/feeds install -a




复制代码


5.配置编译选项




    
make menuconfig




复制代码


默认就是brcm-2.4平台，模块前面选项有3种：

*：表示该模块直接编译到核心中

M：该模块以被核心支持，可以后再安装

空白：不支持该模块

具体模块的起什么作用需要多google.

6.编译选项配置保存后，开始编译




    
make V=99




复制代码


慢慢的等吧，快则半小时，慢则2，3小时.

7.编译好的文件在当前目录的bin文件夹下。

如果是brcm-2.4

ls bin/brcm-2.4/

就可以看到很多熟悉的文件了。


 


如何编译Openwrt - 简化版


以非 root 用户运行以下命令

　　aptitude update

　　aptitude upgrade

　　aptitude dist-upgrade（在必要时）

　　aptitude install 编译需要用到的软件包（详见下面的说明）

　　mkdir /home/yourname/openwrt

　　cd /home/yourname/openwrt

　　svn co svn://svn.openwrt.org/openwrt/branches/backfire

　　./backfire/scripts/feeds update -a

　　./backfire/scripts/feeds install -a

　　cd /home/yourname/openwrt/backfire

　　svn up

　　make menuconfig

　　make



编译用软件包说明

　　如果是32 bit (x86) 系统安装以下包，下面有些包依赖非常多，如果不熟悉Debian系统的话，建议一个一个安装以观察情况，其中当前的 testing 发行版是没有 jikes 和 sdcc-nf 两个软件包；

　　autoconf asciidoc binutils build-essential bzip2 fastjar flex g++ gcc gawk bison libgtk2.0-dev

　　libncurses5-dev libz-dev intltool jikes zlib1g-dev make ncurses-dev libssl-dev patch perl-modules

　　rsync ruby sdcc unzip wget sdcc-nf gettext xsltproc zlib1g-dev subversion



　　使用　64 bit (x86_64) 系统的不多说，请参考下面的命令

　　# apt-get install build-essential asciidoc autoconf binutils bison bzip2

　　　flex gawk gettext libncurses5-dev libz-dev patch unzip zlib1g-dev

　　　ia32-libs lib32gcc1 libc6-dev-i386



　　这里有一个对应的依赖包清单，详见下面的地址。　http://wiki.openwrt.org/doc/howt ... responding.packages



Openwrt的源代码分支说明

　　这里向来自 windows 的朋友简单解释一下 Openwrt 源码的分支情况。我们知道 windows 也分 XP/VISTA/7 等等版本，假定现在最新的 windows 版本是 XP，那么我们可以简单地替代成 Openwrt 中的 backfire ，其实 XP 也只是一个代号，而非真正的版本号，在 cmd 命令符下可以用 ver 来看到你所使用的 windows 版本号，那么这个 ver 命令看到的版本号就相当于我们的 backfire 10.03 了。

　　假如日后我们的 Openwrt 发行了什么 frontfire allfire 等等的代号，那么你可以想像成 VISTA/7/8/9 了。

　　好了言归正传，其实 Openwrt 有几个分支，比如现在的 backfire，Kamikaze，还有早期的 Whiterussian，那么 SVN 是什么呢，SVN是一个代码版本控制系统，用来给程序员用的，类似的还有 GIT ，这也是 Linux 内核所用的版本控制系统，还有 CVS，剩下我没说的或者说错的，自行Ggoole去吧。



　　通过使用 SVN 可以得到不同分支的 Openwrt 代码

　　Backfire 10.03

　　svn co svn://svn.openwrt.org/openwrt/branches/backfire

　　Kamikaze 8.09

　　svn co svn://svn.openwrt.org/openwrt/branches/8.09

　　Kamikaze 7.09 （已经放弃了）

　　svn co svn://svn.openwrt.org/openwrt/tags/kamikaze_7.09

　　开发版分支（俗称 trunk）

　　svn co svn://svn.openwrt.org/openwrt/trunk/

　　使用 &quot;tagged&quot; 版本的代码

　　svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03



　　Kamikaze 分支的软件包

　　Kamikaze 仅包含一些基本的软件包，有两种方法可以得到额外的软件包，一是 make package/symlinks ，二是 svn co svn://svn.openwrt.org/openwrt/packages



　　如果是使用 GIT 则用以下命令获得代码

　　git://nbd.name/openwrt.git (克隆自 trunk)

　　git://nbd.name/packages.git (克隆自 packages)



make menuconfig 说明

　　　　默认就是brcm-2.4平台，模块前面选项有3种：

　　*：表示该模块直接编译到核心中

　　M：该模块以被核心支持，可以后再安装

　　空白：不支持该模块

　　具体模块的起什么作用需要多google



make 命令简单说明

　　make V=99

　　V=99表示输出详细的debug信息



　　make world

　　表示编译所有



　　make j=2 V=99

　　如是多核CPU，加j=2 选项理论上能加快编译速度

　　make -j 2 V=99可加快编译速度（不推荐使用）



　　只清除某个模块

　　make package/qos/clean



　　只编译某个模块

　　make package/qos/clean

　　make package/qos/compile

　　make package/qos/install



　　make V=99 | tee compile_v1.0.0.log

　　混合 tee 命令将编译信息放到compile_v1.0.0.log文件中方便查看。



x86的编译要点

　考虑到x86平台使用的特点，以及 OpenWrt 本身，可参考以下要点

　1. 编译所有文件系统支持，包括ext2/ext3/ext4，还有NTFS，甚至是LVM；

　2. 加入一个文本编辑器，例如vim或者nano，因为日常使用中需要用文本编辑器修改各种配置文件；

　3. 加入所有关于无线网卡的驱动，模块，各种支持程序，

　4. 一些其他常见应用--蓝牙、加密、PGP、SSL、SSH、VPN、USB支持、3G上网卡、

　5. 编译时要到网上下载相关源码，所以可以日后下载的包尽量不选择编译；

　6. 编译好的文件在当前目录的bin文件夹下，如果是brcm-2.4，则 ls bin/brcm-2.4/ 就可以看到很多熟悉的文件了。



参考资料

　　如何给 Openwrt 提交补丁

　　https://dev.openwrt.org/wiki/SubmittingPatches



　　Openwrt 源代码的下载方式

　　https://dev.openwrt.org/wiki/GetSource



　　构造编译环境

　　http://wiki.openwrt.org/doc/howto/buildroot



　　构造编译环境－老的文档

　　http://downloads.openwrt.org/docs/buildroot-documentation.html



　　本文赖以生存的基础－官方wiki中的编译教程，我翻译了编译一文中的小部分。

　　http://wiki.openwrt.org/doc/howto/build



　　下文有详细的编译方面说明

　　http://downloads.openwrt.org/kamikaze/docs/openwrt.html
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
