在Ubuntu下编译wpa_supplicant

本文详细介绍了如何在Ubuntu系统中编译wpa_supplicant,包括下载wpa_supplicant、openssl和libnl源码,解决编译过程中遇到的错误,以及配置和编译这三个库的步骤,最终成功生成wpa_supplicant的可执行文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在研究WiFi联盟的多屏互动协议Miracast,其中需要用到wpa_supplicant,编译中遇到了一些问题,经过一下午的折腾也都解决了,下面分享给各位。

一、编译需要用到三个库源码包,分别是wpa_supplicant, openssl, libnl

1. wpa_supplicant是我们需要编译的源文件包,目前最新版本是1.1。在终端命令行下输入: wget http://hostap.epitest.fi/releases/wpa_supplicant-1.1.tar.gz 进行下载。

2. openssl是ssl协议的开源库,wpa_supplicant文档中声明支持的是0.9.8d版本,在实践中最新的1.0.1c版本也能通过编译。在终端命令行下输入: http://openssl.org/source/openssl-1.0.1c.tar.gz 进行下载。

3. libnl也是需要的,在编译中我首先尝试的是libnl3,在编译过程中发现它的接口和wpa_supplicant调用的已经有了变化,所以改成较早的libnl1.1。同样,在终端命令行下输入:wget http://www.infradead.org/~tgr/libnl/files/libnl-1.1.tar.gz 下载它。

二、下载完成并解压三个库的源代码,下面可以开始编译:

1. 编译libnl. 

### 交叉编译环境准备 为了在Linux环境下成功完成`wpa_supplicant`的交叉编译工作,需先准备好宿主机操作系统以及目标平台的相关配置。宿主机选用的是Ubuntu18.04 x64版本,而目标平台则为Hi3516DV300芯片组。针对此特定硬件架构,所使用的交叉编译工具链为`arm-himix200-linux-gcc`[^1]。 ### 安装依赖库 由于`wpa_supplicant`依赖于多个外部库来实现其功能,在开始编译之前还需要安装这些必要的支持文件。具体来说,项目依赖于`libnl(1.1.4)`用于网络链接管理接口的支持;另外还需借助`openssl(1.1.0)`提供加密服务保障通信安全。 对于`libnl`库而言,可以从官方网站获取源码包并按照说明文档中的指导进行构建与安装操作[^3]: ```bash wget http://www.infradead.org/~tgr/libnl/files/libnl-1.1.4.tar.gz tar xf libnl-1.1.4.tar.gz cd libnl-1.1.4/ ./configure --host=arm-himix200-linux CC=arm-himix200-linux-gcc CXX=arm-himix200-linux-g++ make && make install DESTDIR=/path/to/installation/prefix ``` 注意替换上述命令中`DESTDIR`参数指向的实际路径为你希望保存交叉编译后的产物的位置。 ### 获取并解压WPA_Supplicant源代码 接下来下载指定版本(`v2.9`) 的`wpa_supplicant`压缩包,并将其放置在一个合适的工作目录内展开: ```bash mkdir ~/workspace && cd ~/workspace wget https://w1.fi/releases/wpa_supplicant-2.9.tar.gz tar -xvf wpa_supplicant-2.9.tar.gz cd wpa_supplicant-2.9/wpa_supplicant/ sudo chmod 777 -R . cp defconfig .config ``` 这里通过复制默认配置模板作为基础设置文件`.config`,后续可根据实际需求调整其中各项选项以适应不同应用场景的要求[^2]。 ### 配置交叉编译选项 编辑刚刚创建好的`.config` 文件,确保启用了适用于嵌入式系统的特性开关,同时指定了正确的交叉编译器前缀名以便能够调用到前面提到过的`arm-himix200-linux-gcc` 工具集 : ```diff CONFIG_DRIVER_NL80211=y + CONFIG_LIBNL20=y + CFLAGS += -I/path/to/libnl/include + LIBS += -L/path/to/libnl/lib CC=arm-himix200-linux-gcc LD=arm-himix200-linux-ld AR=arm-himix200-linux-ar ``` > **提示**: `/path/to/libnl/*` 应该被替换成上一步骤中定义的目标位置下的相应子目录名称。 ### 执行编译过程 一切就绪之后就可以运行Makefile来进行最终的产品组装了: ```bash make ``` 如果整个流程顺利无误的话,则会在当前文件夹下找到名为 `wpa_supplicant` 可执行程序以及其他辅助脚本等资源,它们已经过适配可以部署至基于ARM架构设计的小型计算机设备上了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值