本文最后更新于 720 天前,其中的信息可能已经有所发展或是发生改变。
进入源码目录(如果不在此目录)
cd openwrt
更新(短期内再次编译可以忽略这个步骤)
更新系统
sudo sh -c "apt update && apt upgrade -y"
拉取openwrt源码更新
git pull
清理feeds源码(可选)
./scripts/feeds clean
拉取feeds源码更新
./scripts/feeds update -a
安装feeds
./scripts/feeds install -a
文件清理
清除旧的编译产物(可选)
make clean
在源码有大规模更新或者内核更新后执行,以保证编译质量。此操作会删除 /bin和 /build_dir目录中的文件。
清除旧的编译产物、交叉编译工具及工具链等目录(可选)
make dirclean
更换架构编译前必须执行。此操作会删除 /bin 和 /build_dir 目录的中的文件(make clean)以及 /staging_dir、/toolchain、/tmp和/logs中的文件。
清除 OpenWrt 源码以外的文件(可选)
make distclean
除非是做开发,并打算 push 到 GitHub 这样的远程仓库,否则几乎用不到。此操作相当于
make dirclean
外加删除 /dl、/feeds目录和 .config文件。
还原 OpenWrt 源码到初始状态(可选)
git clean -xdf
如果把源码改坏了,或者长时间没有进行编译时使用。
清除编译缓存
rm -rf tmp
此操作据说可防止
make menuconfig
加载错误
删除配置文件(可选)
rm -f .config
可以理解为恢复默认配置,建议切换架构编译前执行。
编译
调整 OpenWrt 系统组件
make menuconfig
如果不打算调整组件则输入
make defconfig
它会检测编译环境并根据更新自动调整编译配置文件。
预下载编译所需的软件包
make download -j8 V=s
检查文件完整性
find dl -size -1024c -exec ls -l {} \;
此命令可以列出下载不完整的文件(根据我多次编译的经验得出小于1k的文件属于下载不完整),如果存在这样的文件可以使用
find dl -size -1024c -exec rm -f {} \;
命令将它们删除,然后重新执行
make download
下载并反复检查,确认所有文件完整可大大提高编译成功率,避免浪费时间。
开始编译
make -j$(nproc) V=s
-j$(nproc):自动获取CPU线程数,采用多线程编译。成功编译后的再次编译且没有进行
make clean
操作时使用。