这篇文章上次修改于 502 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

封面

编译环境搭建

不得不说编译openwrt起来挺蛋疼的,国内访问资源速度慢,有时候还会出现下载不到包的何况。还有编译环境,推荐Ubuntu16.04,在arch下编译老是有些奇奇怪怪的问题(滚动更新都这样),且能兼容一些比较老的包。

安装编译程序

# Ubuntu 64bit
apt install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev
# Arch
pacman -S subversion asciidoc bash bc binutils bzip2 fastjar flex git gcc util-linux gawk intltool zlib make cdrkit ncurses openssl patch perl-extutils-makemaker rsync unzip wget gettext libxslt boost libusb bin86 sharutils b43-fwcutter findutils time

其他Linux版本参考这里Build system – Installation

下载源码

以lede源码为例,我比较喜欢到github获取文件,可以用git pull或者wget压缩包
github仓库: lede openwrt

wget https://github.com/lede-project/source/archive/v17.01.6.zip
unzip v17.01.6.zip

配置

Updating feeds

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

make menuconfig
Snipaste_2018-09-04_12-43-25.png
选择需要对应的路由器,如果没有可以去找相对应的patch,比如我硬改16M的wt3020
patch -p1 < 0001-WT3020-Add-support-for-16M-flash.patch
启用luci,luci中文翻译,openssh-sftp-server,usb支持等

编译

make # 进行编译
make -j4  # 使用4线程编译
make V=s  # 编译详情,用于排错

编译完成后固件和安装包在/bin/targets/文件夹下

其他

make download # 仅下载make需要的文件
make defconfig # 默认配置
make package/cups/compile # 构筑单个包
make clean  # 清除`/bin`和`/build_dir`文件夹
make dirclean  # 清除编译完成的文件和相对应工具链,相对应全面清除
make distclean  # 相对上面会清除配置和feeds

小提示

推荐make和update feeds时使用代理。
可以试试在国外的vps上编译,就算内存小也不一定比本地编译慢(笑哭