OpenWrt编译
一、引言
OpenWrt是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。现在越来越多的产品都是基于OpenWrt系统进行修改的,所以学会如何编译OpenWrt是比较有必要的。
二、环境
本例采用Ubuntu 20.04作为编译环境,需要按要求安装对应的工具链
sudo apt-get update
sudo apt-get install gcc g++ build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch flex bison make autoconf texinfo unzip sharutils subversion ncurses-term zlib1g-dev ccache upx lib32gcc1 libc6-dev-i386 uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev libglib2.0-dev xmlto qemu-utils automake libtool -y
三、下载
下载源码进行编译,也可以下载特定的版本
mkdir openwrt
cd openwrt
# 下载最新版本
git clone https://github.com/openwrt/openwrt.git
# 下载特定版本
# git clone -b lede-17.01 https://github.com/openwrt/openwrt.git source
四、更新软件
更新软件
cd source
./scripts/feeds update -a
./scripts/feeds install -a
五、编译参数
通常使用菜单选择编译的参数
# 默认编译环境
make defconfig
# 定制化编译环境
make menuconfig
使用定制化编译环境

1、选择Target System,也就是CPU架构、型号这些

2、选择Subtarget,对应Flash信息,如果不知道可以按默认选择

3、选择Target Profile,对应主板、内存、存储等信息

4、选择Target images,可以按默认选择

5、选择Global build settings,设置通用、内核等编译参数

6、选择LuCI

再进入“1. Collections”,安装luci的Web服务

再进入"2. Modules" -> Translations,安装语言包

7、选择好所有参数后,按左右方向键点击Save菜单,保存为“.config”文件,保存后再按左右方向键点击Exit退出menuconfig。

六、编译
编译先下载dl库,编译可以用多线程,“-j8”表示8个线程。
# 下载dl库,编译成功率更高
make -j8 download V=s
# 编译
make V=99 -j8
最后固件生成在bin目录
# 固件存储位置
openwrt/source/bin/targets/[某架构]/generic
# 内核相关文件
openwrt/source/build_dir/target-[某架构版本]/linux-[某架构]
七、参考链接
https://baike.baidu.com/item/openWRT/3528947