CentOS 下编译 OpenWrt 笔记

本文主要记录个人在 CentOS 下编译 OpenWrt 的过程,不深入涉及原理。
此外,本文主要讲解的是编译 OpenWrt 的重要分支 Gargoyle 版本,也就是国人经常说的“石像鬼”版本。

一、准备编译环境

编译环境没什么好说的,不管你用什么 Linux 发行版本,基本都需要安装以下基础软件包,只是安装的命令不同罢了,常用就是 yum install / apt-get install
本人 Centos , 因此用 yum install , 如果是 Ubuntu、Debian 的话,就用 apt-get。

yum install asciidoc autoconf binutils bison build-essential bzip2
flex gawk gettext git libncurses5-dev libssl-dev libxml-parser-perl
libz-dev patch quilt subversion uglifyjs unzip xsltproc zlib1g-dev

二、Git 克隆下载 OpenWrt 源码

运行如下命令:
git clone git://gargoyle-router.com/gargoyle.git
运行后通常显示如下,这个只是 git 环境基本建立,具体源码还不会下载到本地,因此本命令速度较快,直到后面 make 时候才会在线下载。
Initialized empty Git repository in /root/openwrt/gargoyle/.git/
remote: Counting objects: 22409, done.
remote: Compressing objects: 100% (9164/9164), done.
remote: Total 22409 (delta 13332), reused 20249 (delta 11872)
Receiving objects: 100% (22409/22409), 4.05 MiB | 547 KiB/s, done.
Resolving deltas: 100% (13332/13332), done.

三、开始编译过程。
根据 Makefile 文件中的一些设置,通常 make 命令需要带一些参数,如果你只是简单运行不带参数的 make, 则默认会编译所有版本固件,时间会更久。
比如,我的路由器是 H618B,根据芯片需要选择目标固件是 brcm47xx,因此对应的参数是:
make FULL_BUILD=true brcm47xx
其中 FULL_BUILD=true 代表全新编译。

make brcm47xx
则默认是 rebuild,也就是如果你曾经编译过,则只对更新部分进行编译。

如果你想自己定制固件选项,直接运行
make custom
上述命令会自动调用 make menuconfig 配置菜单,和正常版本的 OpenWrt 编译步骤一致。

注意:本人亲测,编译过程中通常可能会出现中断,主要是缺少以下两个库的开发包,运行如下命令安装即可重新运行 make 命令,继续安装过程。
yum install ncurses-devel
yum install zlib-devel

四、编译完成。 经过很长时间的等待,通常第一次编译可能有几个小时,终于编译成功了!
编译后的结果文件主要位于以下目录
./built/ : 这个目录基本上包含了所有的.ipk 文件,可以直接在你 router 上安装使用。
./images/:刷机的目标固件就位于这个目录,通常是.bin 或者.trx 文件。