(一)环境配置和目录结构说明
1 环境配置
1.1 系统特点
与其他系统不一样,Openwrt的firmware开发系统比较特别,其基本不包含任何可执行程序,甚至源代码,它依靠一套脚本自动下载源代码、应用及其补丁来构建包括交叉编译器等整个体系,依靠脚本dowloading、patching、compiling一切并完成编译构建。通过修改template,我们就可以改变此过程中的任何步骤。
例如,如果一新的kernel发布了,只需要简单地修订其中的一个makefile文件就会download最新的kernel,patch,编译新的firmware。这不仅适用于kernel,也适用于openwrt的所有模块。这使得openwrt保持最新的编译器、最新的内核及最新的应用。你甚至可以利用这一系统编译构建与OpenWrt无关的其他APP和系统。
1.2 开发环境配置
1.2.1 OS及相关工具和库
l 安装ubuntu
l 安装最新版本的ubuntu系统,并更新组件。
$ sudo apt-get update
$ sudo apt-get upgrade
l 安装SVN、GIT工具
$ sudo apt-get install subversion
$ sudo apt-get install git-core
l 安装编译工具和依赖库
$ sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils ncurses-term zlib1g-dev libncurses5-dev gawk libz-dev
1.2.2 下载 OpenWrt 源码
新建一个工程目录文件夹,使用 svn 工具下载源码。
$ mkdir openwrt
$ cd openwrt/
$ svn co svn://svn.openwrt.org/openwrt/trunk
$git clone https://git.openwrt.org/openwrt.git
国内镜像: svn://svn.openwrt.org.cn/openwrt/trunk
1.2.3 更新支持软件和工具
为了使 OpenWrt 支持更多的软件,需要更新和安装系统预定义的软件。使用普通用户权限执行即可,用 root 可能出错。
$ cd trunk
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
1.2.4 编译OpenWrt源码
与Linux类似,OpenWrt编译前需要对目标系统进行配置,同样使用menuconfig进行配置。
主要需要配置的是CUP型号和CUP子型号以及路由器型号,其他配置按照自己系统的需要选取。
$ make menuconfig
Target System -> Ralink RT288x/RT3xxx
Subtarget -> RT3x5x/RT5350 based boards
Target profile -> HAME-MPR-A2
保存退出后就可以进行编译,编译命令是:
$ make V=99 -j2
V=99表示显示所有信息;
-j表示有几个线程同时编译;
编译结果在./bin/your_target/目录下。
其中,openwrt-xxx-sysupgrade.bin就是可以下载到板上的固件可执行文件。
1.2.5 几个注意事项
注意:多线程编译可能会在中间文件依赖上产生问题,当出现编译问题时,可采取以下措施找出原因进行修正。
1、更新所有模块和软件后再次进行编译。具体命令是apt-get update/upgrade, feed update/install
2、使用-j1,单线程编译查看log发现具体原因,可以多尝试几次-j1编译。一般来说如果按照上述步骤进行环境搭建和代码下载不应该出现编译问