宿主机操作系统:Ubuntu 17.04
目标板型号:MT7620A 开发板
OpenWRT 源码版本:Barrier Breaker 14.07
OpenWrt 源码下载
haha@Ubuntu:~$ git clone -b barrier_breaker git://github.com/openwrt/openwrt.git
更新、安装其他源上的软件
haha@Ubuntu:~$ cd openwrt
haha@Ubuntu:~/openwrt$ ./scripts/feeds update -a
haha@Ubuntu:~/openwrt$ ./scripts/feeds install -a
检查编译环境
#检查编译环境是否完整,如果提示错误,则根据错误信息进行排错
#一般是提示缺少相关工具,apt install 即可
haha@Ubuntu:~/openwrt$ make defconfig
haha@Ubuntu:~/openwrt$ make prereq
裁剪系统
#Target System、Subtarget 需要根据目标板型号正确选择
#其它功能模块根据需求进行选择
haha@Ubuntu:~/openwrt$ make menuconfig
编译
#V=99 表示显示所有信息
#首次编译一般花1~2个小时的时间,以后再次编译一般在半分钟左右就可以完成
haha@Ubuntu:~/openwrt$ make V=99
编译出的固件
编译出的固件存放在 ~/openwrt/bin/xxxx/ 目录下,我的是 ~/openwrt/bin/ramips/openwrt-ramips-mt7620a-mt7620a-squashfs-sysupgrade.bin
烧录固件
开发板通过串口、网口连接电脑,开发板上电启动 Uboot,根据 Uboot 提示选择适当的方式烧录固件。
编译时遇到 error 及解决方案
error: recipe for target '/home/haha/openwrt/dl/linux-3.10.49.tar.xz' failed
solution: 编译过程需要下载 linux-3.10.49.tar.xz 并存放在 dl 目录下,可能是编译尝试的所有源都已经失效了,我们可以手动下载该文件并放在 dl 目录下。linux 内核下载镜像: https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.49.tar.xz。error: recipe for target '/home/haha/openwrt/barrier_breaker/dl/util-linux-2.24.1.tar.xz' failed
solution: 原因同上,文件下载地址:https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.1.tar.xzerror: 'const char* libc_name_p(const char*, unsigned int)' redeclared inline with 'gnu_inline' attribute
solution: 参考资料:https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00375.html。原因和解决方案在参考资料都有讲到!