Openwrt 编译教程
Openwrt
引言:本文档编译的lean的openwrt + ath10K
编译环境:
虚拟机: Ubuntu20.04
外部系统: win7
注意:
- 不要用 root 用户进行编译!
- 国内用户编译前最好准备好梯子
操作步骤:
一:下载源码
https://github.com/compex-systems/lede windows环境下载源码,这样比较快。
或者使用 git clone https://github.com/compex-systems/lede 命令下载好源代码,然后 cd lede 进入目录
二:更新源(Feeds)
./scripts/feeds update -a
./scripts/feeds install -a
三:镜像配置
make menuconfig
Menuconfig
拥有一个文本界面,它包括选择要处理的目标平台,要编译的软件包,要被包含进固件文件的软件包和一些内核设置等。
同配置Linux内核类似,几乎每一个设置都有三个选项:y / m / n,分别代表如下含义:
* `` (按下`y`)这个包会被包含进固件镜像
* `` (按下`m`)这个包会在生成刷新OpenWrt的镜像文件以后被编译,但是不会被包含进镜像文件
* `` (按下`n`)这个包不会被编译
当你保存你的配置后,.config
这个文件会按照你的配置被生成。
三:
make -j8 download V=s 下载dl库(国内请尽量全局科上网)
[我没科上网 就是下载慢一点 也没啥问题]
四:
输入 make -j1 V=s (-j1 后面是线程数。第一次编译推荐用单线程)即可开始编译你要的固件了。
[这里会有几个问题,文章后面会有解决办法]
五:
编译成功后文件会保存在bin/targets文件夹下下
上传到板子:
tftp 0x80060000 openwrt-ar71xx-generic-wpj563-squashfs-sysupgrade.bin
erase 0x9f030000 +$filesize
cp.b $fileaddr 0x9f030000 $filesize
问题汇总:
问题:
error: #error "Please port gnulib freadahead.c to your platform!
方法:
进入对应文件夹
sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
问题解决,继续正常编译
问题2:
openwrt error: conflicting types for '__u64'
方法:
在源码目录中查找包含“__u64”的文件,把函数类型修改一致,查找文件指令如下
Find ./* -name “__u64”
找到后都改成unsigned long long __u64
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?