准备环境:ubuntu 22/24,debian 11/12
安装依赖
apt install binutils-gold bison build-essential ccache ecj fastjar file flex g++ gawk gcc-arm* gettext git libbsd-dev libelf-dev libncurses-dev libssl-dev meson mold ninja-build pbzip2 pigz pkg-config python3-dev python3-setuptools rsync subversion swig time unzip wget xsltproc xxd zlib1g-dev zstd
apt install build-essential clang flex bison g++ gawk \
gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev \
python3-distutils python3-setuptools rsync swig unzip zlib1g-dev file wget
新建一个普通用户 useradd -m 用户名。
给新建用户设置密码 passwd 用户名。
给用户添加sudo权限 usermod -aG sudo 用户名。
切换到新建的用户 su – 刚刚新建的用户名。
输入cd回车,切换到用户的根目录,上传openwrt或者其他分支的源码。
添加科学环境,因为要期间会用到大量git,如果你用的非国内服务器,那不需要此步骤。
export all_proxy=http://127.0.0.1:10985
export http_proxy=http://127.0.0.1:10985
export https_proxy=http://127.0.0.1:10985
cd切换到源码根目录,依次执行以下命令。
./scripts/feeds clean
./scripts/feeds update -a
./scripts/feeds install -a
期间如果有报错请检查科学环境,正常是不会报错的。
执行完毕后输入 make menuconfig
Target System → CPU 架构
Subtarget → 子平台
Target Profile → 路由器型号
LUCI > 3.Applications 可以自定义需要内置的软件。Network内一般内置了软件分载和硬件分载。
推荐在根菜单 Global build settings 内 选中 Strip unnecessary exports from the kernel image与 Strip unnecessary functions from libraries,这两个选项可以降低一些固件体积,提升一点点性能。
选择完毕后切换到save按钮保存然后退出。
执行 make defconfig 生成配置
执行 make download -j$(nproc) 下载预编译软件包依赖。
执行 make -j$(nproc) V=sc 开始编译,默认官方源码不会有报错,如果你通过其他方式手动添加了软件进去编译可能出现报错,按提示排查。
开始编译需要等待较长时间,编译结束后查看 bin/targets/ 或者固件,刷入设备即可。
如果需要编译其他平台,可以避免再次浪费时间下载依赖,请按以下步骤。
执行 make clean。
执行 make menuconfig 重新配置硬件软件。
选择好 Target System / Subtarget / Target Profile 。
执行 make defconfig
开始编译 make -j$(nproc) V=sc
编译完成后会在 bin/targets/ 生成不同设备名称的文件夹。

个人自用固件遇到的一些问题。
23.05源码,加入turboacc sfe插件,使用https://github.com/chenmozhijin/turboacc。
运行脚本后进行编译报错,需要修改 package/turboacc/luci-app-turboacc/Makefile
大约32行,或直接搜索,+PACKAGE_$(PKG_NAME)_INCLUDE_NFT_FULLCONE:kmod-nft-fullcone 将这行注释或者删除。
保存后重新使用make menuconfig,进入Kernel modules – > Netfilter Extensions ,找到 kmod-nft-fullcone,空格选中将其改变为 <*>,由于添加了turboacc会额外多出来一个,选中一个会变成两个都选中,不用管即可。![]()
返回进入 LuCI -> Applications,找到 luci-app-turboacc,取消选中的 Include NFT FULLCONE 模块。
如果你硬件配置还可以,那推荐用自带的软件/硬件流量分载,硬件性能较低推荐使用SFE。
使用SFE需要取消勾选 Include Flow Offload,取消勾选后下方就会出现 Include Shortcut-FE,选中即可。![]()