openwrt 编译经验【2021-01-28】
编译环境
Kubuntu 20.10 (理论上其他Ubuntu发行版也是一样的)
首先参考L大的Openwrt Readme,安装
build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 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 antlr3 gperf wget curl swig rsync
这些包(部分系统自带)
另外,最好准备好梯子。
编译仓库
我用的是openwrt的官方源代码,国内速度慢的话可以用gitee来加速clone。
不止openwrt源码需要加速,openwrt/feed.conf.defaults里面的仓库也都需要加速,可以自己修改为gitee下的仓库目录或者使用其他方法加速。
编译配置
使用make menuconfig选择自己需要的包即可。
参考L大的插件说明
另外,生成的.config文件里,libustream-wolf和dnsmasq两个用户包会报错,需要注释掉。
编译过程
- 安装编译工具
sudo apt install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 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 antlr3 gperf wget curl swig rsync -y
- 下载openwrt仓库
其中git地址可以替换为自己的openwrt仓库。git clone https://git.openwrt.org/openwrt/openwrt.git/
- 进入仓库并切换到自己需要的版本
cd openwrt git checkout remotes/origin/openwrt-19.07
- 编辑feeds.conf.defaults仓库以加速
替换为自己的加速仓库。nano feeds.conf.default
- 然后先用feeds更新
./scripts/feeds update -a ./scripts/feeds install -a
- 生成配置文件
make menuconfig
- 修改.config文件
将这两行注释掉nano .config
CONFIG_PACKAGE_libustream-wolfssl
CONFIG_PACKAGE_dnsmasq - 为防止在并行编译时出错,先运行 make download
这里会下载很多东西,建议使用代理,但是注意代理的情况下有一个问题,就是pip在没有安装pysocks的时候不能通过socks连接。make -j8 download V=s
- 编译
虽然教程里说make download可以防止并行编译的错误,但是我在并行编译时还是有些莫名其妙的包不能编译成功,应该有相互依赖的关系,长时间挂机编译的话建议单线程编译,否则可以重复几次。make -j1 V=s