编译OpenWrt系统固件
首先OpenWrt系统的编译构建可以在Linux、BSD或MacOS上运行,但是需要区分大小写的文件系统。
建议您使用Linux发行版(例如Debian)编译构建,可以是独立安装,也可以在虚拟环境(Virtualbox、VMware、Hyper-V或Qemu)中运行。
本人选择的是在虚拟机中安装Ubuntu 18.4,如果你是Windows 10用户建议在Windows Linux子系统(WSL)上编译免去安装虚拟机等操作,建议编译环境有10GB以上的可用磁盘空间和2GB以上的内存。
一、安装编译所需的依赖软件
sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc zip
二、从官方Git镜像仓库克隆源代码
git clone https://git.openwrt.org/openwrt/openwrt.git
如果要指定的分支(branch_name替换成自己需要的分支名称)
git clone https://www.github.com/openwrt/openwrt -b branch_name
三、进入工作目录,检查编译环境,主要检查是否安装所需软件包,如果缺少安装相应依赖软件。
cd openwrt
make prereq
四、更新安装feeds(第三方包)
./scripts/feeds update -a
./scripts/feeds install -a
五、初始化配置文件(不是必须操作)
make defconfig
六、运行固件配置器并进行配置
make menuconfig
*表示将软件包编译进固件,M表示软件包会被编译,但不会编译进固件。
七、下载所有依赖项的源代码(不是必须操作)
make download V=s
八、开始编译
make V=s
其他说明:
编译后固件存放位置:bin/targets/系列名/
V=s表示输出日志 -JX表示最多可以使用X个内核编译(首次编译请勿使用该参数)
例如:使用8个内核编译
make -j9 V=s
如果我们编译出错时可以运行先下面例子,将错误输出到build.log并在屏幕上显示错误
make V=s 2>&1 | tee build.log | grep -i '[^_-"a-z]error[^_-.a-z]'
清除上次编译文件(bin目录)
make clean
清除交叉编译工具及工具链目录
make dirclean
清除所有相关的东西,包括下载的软件包,配置文件,feed内容等
make distclean
当我们第二次编译时这样操作
git pull #更新源代码
./scripts/feeds update -a #更新feeds
./scripts/feeds install -a #安装feeds
make clean #清除上次编译的object文件(后缀".o")及可执行文件
rm -rf ./tmp #清除编译缓存
rm -rf .config #清除编译配置 如果想保留上次编译配置不执行
make menuconfig #进入配置固件菜单
如果网络慢可以开启代理
设置git代理
git config --global http.proxy socks5://192.168.199.228:1080
git config --global https.proxy socks5://192.168.199.228:1080
查看git代理
git config --global --get http.proxy
git config --global --get https.proxy
取消git代理
git config --global --unset http.proxy
git config --global --unset https.proxy
设置系统代理
export http_proxy="http://192.168.199.228:1080"
export https_proxy="http://192.168.199.228:1080"
取消系统代理
export http_proxy=""
export https_proxy=""
上一篇 : Linux service创建
下一篇 : CentOS安装Gitea管理代码