问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

编译属于自己的理想Openwrt固件

创作时间:
作者:
@小白创作中心

编译属于自己的理想Openwrt固件

引用
什么值得买
1.
https://post.m.smzdm.com/p/al8nqmqg/

编译属于自己的理想Openwrt固件

本文详细介绍了如何编译Openwrt固件,包括编译环境的选择、依赖安装、源码下载及配置、编译过程等步骤,并提供了具体的命令行操作示例。

前言

近年来,Openwrt因其强大的功能和灵活性而受到越来越多用户的青睐。许多用户选择使用Openwrt来实现旁路由等特殊功能。在使用过程中,一些用户可能会发现现成的固件要么过于精简,要么功能过多,因此选择自己编译固件以满足特定需求。本文将详细介绍如何编译Openwrt固件,适合有一定技术基础的用户参考。

一、编译环境

在开始编译之前,需要确定编译环境。目前主要有两种编译环境可供选择:

1. 云编译

云编译是一种便捷的编译方式,可以使用P3TERX大佬编写的Actions-OpenWrt项目,在GitHub Actions上进行云编译。这种方法不需要搭建本地编译环境,适合对编译环境搭建不熟悉的用户。

2. Debian或Ubuntu编译

对于熟悉Linux环境的用户,可以选择在Debian或Ubuntu系统上进行编译。这种方法需要搭建本地编译环境,但可以更好地控制编译过程。可以选择在物理机或虚拟机上搭建编译环境,本文将以VMware+Ubuntu为例进行说明。

二、Openwrt编译

安装编译依赖

在开始编译之前,需要安装一些必要的依赖包。以下是具体的安装命令:

sudo apt update -y
sudo apt full-upgrade -y
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 libfuse-dev libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev libssl-dev libtool lrzsz ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev

源码下载及配置

1. 首次编译

从GitHub仓库获取编译文件:

git clone https://github.com/coolsnowwolf/lede
cd lede

接下来需要设置插件源。有两种方法可以设置下载仓库:

  1. 使用命令行添加下载仓库:

    git clone https://github.com/fw876/helloworld.git package/lean/luci-app-ssr-plus
    echo 'src-git helloworld https://github.com/fw876/helloworld' >> feeds.conf.default
    

    这种方式在编译后会出现在Openwrt的“软件包”、“软件源”中。

  2. 直接修改feeds.conf.default文件:

    这种方式同样会在编译后出现在Openwrt的“软件包”、“软件源”中。

更新并安装feeds:

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

配置OpenWrt Configuration:

make menuconfig

在这里根据路由器的平台和架构,选择相应的选项。例如,如果是x86架构,选择x86选项。其他选项包括无线支持、IPv6支持以及需要的插件。

下载dl库并编译固件:

make download -j8

检查文件完整性:

find dl -size -1024c -exec ls -l {} ;
find dl -size -1024c -exec rm -f {} ;
make download

编译固件:

make V=s -j1

2. 二次编译

二次编译时,需要先更新代码和feeds:

cd lede
git pull
./scripts/feeds update -a && ./scripts/feeds install -af
make defconfig

清理旧文件:

make clean
make dirclean
make distclean
rm -rf ./tmp && rm -rf .config

重新配置插件:

make menuconfig
make download -j8 V=s
make -j$(nproc) || make -j1 V=s

编译完成后,固件输出路径为bin/targets

总结

在VMware+Ubuntu的编译环境下,可能会遇到编译成功和失败的情况。根据一些用户的反馈,这可能与本地网络环境有关。如果编译失败,可以尝试检查dl库的完整性或更换编译环境。虽然云编译是一种更便捷的选择,但在本地编译可以帮助用户更好地理解整个编译过程,从而在遇到问题时能够更快地定位和解决。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号