You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18.04.3编译无线嗅探器遇ieee80211.h缺失求助

解决编译自定义无线嗅探器时ieee80211.h缺失的问题

我来帮你搞定这个编译报错的问题,结合你用的5.3.0-28-generic内核和libpcap开发场景,给你几个靠谱的解决方案:

1. 安装对应内核版本的头文件包

你的系统缺少匹配版本的内核头文件,这是最常见的原因。直接安装和当前内核一致的头文件包:

sudo apt update && sudo apt install linux-headers-$(uname -r)

安装完成后,ieee80211.h通常会出现在/usr/src/linux-headers-5.3.0-28-generic/include/linux/路径下。编译时需要通过-I参数指定这个头文件路径,比如:

gcc your_sniffer.c -o your_sniffer -lpcap -I/usr/src/linux-headers-5.3.0-28-generic/include

2. 安装无线开发专用的依赖包

如果内核头文件里没找到目标头文件,试试安装wireless-tools-dev包,它专门提供无线相关的开发头文件:

sudo apt install wireless-tools-dev

这个包会把ieee80211.h放到系统标准头文件路径(比如/usr/include/linux/),编译时就不需要额外指定路径了。

3. 改用libpcap自带的802.11帧结构定义

其实libpcap本身已经封装了不少802.11相关的结构体,完全可以不用依赖系统的ieee80211.h。你可以查看libpcap的头文件(比如pcap.h),里面有struct pcap_ieee80211_hdr这类定义,足够满足无线嗅探的基本需求。

这种方法的好处是避免了系统头文件版本不兼容的问题,编译时只需要正常链接libpcap库即可:

gcc your_sniffer.c -o your_sniffer -lpcap

4. 手动提取适配版本的头文件(不推荐)

如果前面的方法都不行,你可以从Linux内核5.3.0的源码中提取ieee80211.h和它的依赖文件(比如ieee80211_defs.h),复制到你的项目目录或者系统头文件路径。但要注意,必须和你的内核版本完全匹配,否则会出现更多依赖报错——这也是你之前手动复制文件出问题的核心原因。

内容的提问来源于stack exchange,提问作者pengfei qin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:17:43