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文件。