目录
编译openwrt sdk时,出现个gdate.c的错误,与编译器版本有关,打个patch就好
编译openwrt问题:
gdate.c: In function 'g_date_strftime':
gdate.c:2497:7: error: format not a string literal, format string not checked [-Werror=format-nonliteral]
tmplen = strftime (tmpbuf, tmpbufsize, locale_format, &tm);
^~~~~~
cc1: some warnings being treated as errors
make[10]: *** [Makefile:1386: libglib_2_0_la-gdate.lo] Error 1
make[10]: Leaving directory '/opt/water/tina-sdk/out/mandolin-perf1/compile_dir/host/pkg-config-0.29/glib/glib'
解决:
单独改源码方式不好,下次重新编译有可能又要重新改, 所以新建个patch一劳永逸
在tools/pkg-config/patches/目录下创建新文件001-glib-gdate-suppress-string-format-literal-warning.patch
内容如下:
--- a/glib/glib/gdate.c
+++ b/glib/glib/gdate.c
@@ -2439,6 +2439,9 @@ win32_strftime_helper (const GDate *d,
*
* Returns: number of characters written to the buffer, or 0 the buffer was too small
*/
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+
gsize
g_date_strftime (gchar *s,
gsize slen,
@@ -2549,3 +2552,5 @@ g_date_strftime (gchar *s,
return retval;
#endif
}
+
+#pragma GCC diagnostic pop
创建完,再执行编译,编译过程openwrt会自动把这个patch打到源码中,无需手动执行patch。
OpenWrt 详细资料总结
OpenWrt 是一个基于 Linux 的嵌入式操作系统,主要用于路由器和其他网络设备。它提供了强大的定制能力、丰富的软件包管理以及活跃的开源社区支持。以下是关于 OpenWrt 的详细资料总结:
1. OpenWrt 简介
- 目标设备:路由器、嵌入式网络设备(如智能网关、NAS、IoT 设备)。
- 核心特点:
- 模块化设计,支持大量软件包扩展(如 VPN、QoS、防火墙)。
- 提供
opkg包管理系统(类似 Linux 的apt/yum)。 - 支持多种硬件架构(MIPS、ARM、x86 等)。
- Web 管理界面(LuCI)和命令行配置。
- 适用场景:
- 路由器固件替代(替代厂商固件,如 TP-Link、Netgear)。
- 网络实验(如搭建 VPN 服务器、流量监控)。
- IoT 设备开发(如智能家居网关)。
2. OpenWrt 开发环境搭建
(1) 硬件要求
- 支持的路由器型号(可在 OpenWrt 硬件支持列表 查询)。
- 推荐开发板:
- Raspberry Pi(ARM)
- x86 迷你 PC(如 Intel NUC)
- 常见路由器(如 TP-Link Archer C7, Netgear R7800)
(2) 软件工具
-
编译环境:
- Linux(Ubuntu/Debian 推荐)或 WSL2(Windows)。
- 依赖安装:
sudo apt update sudo apt install build-essential ccache flex g++ gawk gettext git libncurses5-dev libssl-dev python3 python3-distutils rsync unzip zlib1g-dev
-
源码获取:
git clone https://git.openwrt.org/openwrt/openwrt.git cd openwrt ./scripts/feeds update -a ./scripts/feeds install -a -
配置与编译:
make menuconfig # 选择目标设备架构和软件包 make -j$(nproc) # 开始编译
3. OpenWrt 核心功能
(1) 网络功能
| 功能 | 说明 |
|---|---|
| 防火墙 (netfilter) | 支持 iptables/nftables |
| QoS (SQM) | 智能流量控制 |
| VPN (OpenVPN/WireGuard) | 支持多种 VPN 协议 |
| IPv6 | 完整支持 IPv6 |
| Mesh Networking | 支持 802.11s (无线 Mesh) |
(2) Web 管理界面 (LuCI)
-
默认基于 Lua 的 Web UI,可通过
opkg安装:opkg update opkg install luci -
访问方式:
http://<路由器IP>(默认用户名root,初始无密码)。
(3) 软件包管理 (opkg)
-
安装软件包:
opkg update opkg install <package_name> # e.g., tcpdump, iperf3 -
常用软件包:
类别 软件包示例 VPN openvpn,wireguardNAS samba4,minidlnaIoT mosquitto(MQTT),nodejsMonitoring tcpdump,iftop,vnstat
4. OpenWrt vs. DD-WRT vs. Tomato
| 特性 | OpenWrt | DD-WRT | Tomato |
|---|---|---|---|
| 定制性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 软件包支持 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐ |
| 性能优化 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 新手友好度 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
✅ OpenWrt 适合高级用户和开发者,DD-WRT/Tomato 适合普通用户。
5. OpenWrt 学习资源
(1) 官方文档
- OpenWrt Wiki(最全面的文档)
- OpenWrt Forum(社区讨论)
(2) 书籍 & 教程
- 《OpenWrt智能路由系统开发》
- 《Mastering OpenWrt》(英文)
(3) GitHub & SDK
- OpenWrt GitHub
- OpenWrt SDK(用于交叉编译)
6. OpenWrt FAQ
(1) OpenWrt 能刷到哪些设备?
- 官方支持列表
- 推荐设备:
- TP-Link Archer C7
- Raspberry Pi (作为软路由)
- x86 PC (用于高级路由/NAS)
(2) OpenWrt vs. LEDE?
- LEDE (Linux Embedded Development Environment) 是 OpenWrt 的一个分支,后来合并回 OpenWrt。现在统一使用 OpenWrt。
(3) OpenWrt vs. pfSense/OPNsense?
- OpenWrt 适合嵌入式设备和小型路由。
- pfSense/OPNsense 适合 x86_64 PC,功能更强大(企业级防火墙)。
总结
OpenWrt 是一个高度可定制的开源路由器系统,适用于网络开发者、极客和 IoT 应用。它提供了强大的软件生态和灵活的配置方式,但学习曲线较陡。如果你需要替代厂商固件或搭建高级网络功能,OpenWrt 是最佳选择之一。
本文介绍了解决OpenWrt SDK编译过程中遇到的gdate.c格式字符串非字面量警告的方法。通过创建并应用补丁文件001-glib-gdate-suppress-string-format-literal-warning.patch,可以有效避免这一编译警告。
2748

被折叠的 条评论
为什么被折叠?



