2023-07-13 大白话-编译OpenWrt的关键部分

本地编译大前提:需要自由的全局网络环境,而且稳定速度快就更好,如果没有,还是别浪费时间了,可以尝试使用Action云编译或者国外云主机。Action云编译请自行查找资料。

下图是本地编译的参考资料。

老资料的参考.png

系统推荐Ubuntu22.04 TLS

首次编译

>1、sudo apt update -y
1、sudo apt full-upgrade -y
2、sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
vim wget xmlto xxd zlib1g-dev python3-setuptools
3、git clone [https://github.com/coolsnowwolf/lede](https://github.com/coolsnowwolf/lede)
4、 cd lede #进入目录 
5、./scripts/feeds update -a
6、./scripts/feeds install -a
7、make menuconfig #首次默认配置不要改动
8、make download -j4 V=s
# 下载完成后
find dl -size -1024c -exec ls -l {} \;  #【 寻找小于1k文件确保文件完整性,重复三条命令,直到输出为空可以继续9】
find dl -size -1024c -exec rm -f {} \;  #【 如果上面有,则删除小于1k文件】
make download -j4 V=s  #【 删除之后 >>重新下载】
9、make -j1 V=s #编译

###############二次编译############
下面几种看自己情况选择其一

如果不需要修改配置

cd lede
git pull
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
make download -j4 V=s
make -j$(nproc) V=s 
// 二次编译时间预计会大大缩短

如果需要重新配置组件

1、git pull
2、修改feeds.conf.default里helloworld的注释去掉#号
3、./scripts/feeds update -a && ./scripts/feeds install -a
4、make defconfig
+、make clean //(如果之前编译出错,就clean一下。这也会增加编译时间)
5、rm -rf ./tmp && rm -rf .config //如果需要对组件重新调整,则建议先删除旧配置
6、make menuconfig //选择你需要的配置,具体操作后面有说
7、选择编译所需的内核组件和Luci组件(adguardHome和passwall2)
8、make download -j4 V=s
9、make -j$(nproc) V=s

如果需要修改cpu架构等重要配置

1、git pull
2、修改feeds.conf.default里helloworld的注释去掉#号
3、./scripts/feeds update -a && ./scripts/feeds install -a
// 4、make clean  // 删除/bin和/build_dir目录中的文件
5、make dirclean  // 删除/bin、/build_dir和staging_dir、/toolchain、/tmp 和 /logs中的文件 (这也会极大增加编译时间)
6、make defconfig
7、rm -rf ./tmp && rm -rf .config  \#如果需要对组件重新调整,则建议先删除旧配置
8、make menuconfig #选择你需要的配置
// 7、修改 menu 内的 network => projectv => V2ray Con => 勾选第一个选项
9、选择编译所需的内核组件和Luci组件(adguardHome和passwall2)
10、make download -j4 V=s
11、make -j$(nproc) V=s

一些说明:

  • 命令行中 -j 为线程数

  • 如果需要添加插件源,执行命令:
    在lede/路径下执行

nano feeds.conf.default

然后添加插件源

# 添加插件源,例如添加***源
src-git passwall2 https://github.com/xiaorouji/openwrt-passwall2.git
src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages
  • make menuconfig操作说明

y 键选中组件
n 键取消选中组件
m 键只编译该组件不加入固件
esc esc,两次esc键表示返回
<- -> 左右方向键选择下部按钮,选中save按enter则保存

###############编译成功后############
取出bin/targets/下的openwrt固件文件安装即可


Leo, [2022/11/10 13:36]
“执行./scripts/feeds install -a 好几条 警告 依赖性不存在 怎么办?
WARNING: Makefile 'package/feeds/packages/libesmtp/Makefile' has a build dependency on 'meson/host', which does not exist ”
JasonAmela, [2022/11/10 13:37]
“不用管,只要过了编译就行”

注意事项:
新手编译最好严格按步骤分两步去做,这样哪怕错误也会更容易定位。
如果二次编译成功,那么以后再编译直接执行二次编译的步骤即可。



云Action编译的一些资料

@aizhouyi 非常感谢,不过有个疑问,第一次编译的config没有ssrplus,如果我想第二次注释HELLOWORLD+勾选后,我应该这么做?有没有workflow的模板可以分享一下呢?谢谢
一一解答
第一,可以通过修改feeds文件实现,确实可以。但我用的不是这种方法。
第二,我是直接下载科学源码,再去feeds。
云action推荐https://github.com/P3TERX/Actions-OpenWr
这个写的非常完善了,文档十分详细。
第三,模板很多了,很多定时编译的大佬一直更新,比如
https://github.com/SuLingGG/OpenWrt-Rpi
你也可以点进我的仓库可以看到我的,
https://github.com/aizhouyi/openwrt_compile.git
主要修改是workflow文件(只是我开启了国内上传固件,其他全是默认)和diy-part1.sh(这个就是增加你想要的功能),把本地的配置文件推上去,自动就开始编译了。

以上即为编译的关键操作部分,可能有不详尽或错误之处,感谢指出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容