Complie lede (Openwrt)

推荐系统 Ubuntu 18.04

安装依赖软件包

sudo apt-get update
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib

源码

git clone https://github.com/coolsnowwolf/lede -b master --depth 1

获取 && 安装软件库

cd lede
./scripts/feeds update -a
./scripts/feeds install -a

配置

make menuconfig

听说首次编译最好选择完架构后直接编译,这样会极大提高成功率

预下载编译所需的软件包

make download -j8 V=s

下载过程中如果遇到反复下载失败的资源,可以手动下载放到相应位置,记得删除之前下载失败的残留文件

检查文件完整性

find dl -size -1024c -exec ls -l {} \;

用来检查小于1KB的文件,如果存在,就用这条命令删除然后重新 make download,反复检查

开始编译

make -j1 V=s

V=s 用来输出详细日志

再次编译

更新

  • 更新系统软件包
sudo apt update && sudo apt upgrade
  • 拉取 OpenWrt 源码更新
git pull
  • 更新 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中的文件。

  • 清除 Open­Wrt 源码以外的文件(可选)
make distclean

除非是做开发,并打算 push 到 GitHub 这样的远程仓库,否则几乎用不到。此操作相当于make dirclean外加删除/dl、/feeds目录和.config文件。

  • 还原 Open­Wrt 源码到初始状态(可选)
git clean -xdf

如果把源码改坏了,或者长时间没有进行编译时使用。

  • 清除临时文件
rm -rf tmp

删除执行make menuconfig后产生的一些临时文件,包括一些软件包的检索信息,删除后会重新加载package目录下的软件包。若不删除会导致一些新加入的软件包不显示。

  • 删除编译配置文件
rm -f .config

在不删除的情况下如果取消选择某些组件它的依赖组件不会自动取消,所以对于需要调整组件的情况下建议删除。

编译

  • 调整 Open­Wrt 系统组件
make menuconfig

如果不打算调整组件则输入make defconfig,它会检测编译环境并根据更新自动调整编译配置文件。

  • 预下载编译所需的软件包
make download -j8 V=s
  • 检查文件完整性
find dl -size -1024c -exec ls -l {} \;
  • 开始编译
make -j$(nproc) || make -j1 || make -j1 V=s

多线程编译失败后自动进入单线程编译,失败则输出详细日志。

感谢前辈的教程

https://p3terx.com/archives/openwrt-compilation-steps-and-commands.html