openwrt编译基本教程
其实和重新编译linux核心差不多,对于新手来说最麻烦的恐怕是安装开发环境需要的软件了。
条件:1.PC一台,性能强点,性能好编译得就快。安装ubuntu 8.04中文版。(也可以装在虚拟机里)
2.宽带一条,需要速度好点,因为有很多软件包是网络下载后安装。
3.耐心和时间。
编译流程:
1.安装好ubuntu8.04中文版本,搞定网络连接。
以非root用户登陆,打开“应用程序----附件----终端”。
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/
使用 "tagged" 版本的代码
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