源码编译 OpenWRT

宿主机操作系统:Ubuntu 17.04
目标板型号:MT7620A 开发板
OpenWRT 源码版本:Barrier Breaker 14.07


OpenWrt 源码下载

  haha@Ubuntu:~$ git clone -b barrier_breaker git://github.com/openwrt/openwrt.git
  • 参考资料:How to download the OpenWrt source

更新、安装其他源上的软件

  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.xz

  • error: '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。原因和解决方案在参考资料都有讲到!

你可能感兴趣的:(源码编译 OpenWRT)