移植wpa_supplicant及简单使用

news2024/9/25 19:20:10

        嵌入式环境下的设备有时会需要能连接到外网进行一些数据的交互,通过利用wpa_supplicant客户端结合有线网卡或无线网卡,即可配置好网络达到目的。

        资源:openssl-0.9.8e.tar.gz + wpa_supplicant-0.7.3.tar.gz

        源代码下载路径一:https://download.csdn.net/download/DIANZI520SUA/88485067

        源代码下载路径二:wpa_supplicant 源码下载地址 :Index of /releases

                                        openssl 源码下载地址:/source/index.html

一、安装openssl

        交叉编译wpa_supplicant之前需要安装openssl,因为编译wpa时需要依赖openssl的相关头文件和库。

        将源代码压缩包文件复制到虚拟机路径下(不要放置在Windows与Linux共享文件路径下,编译时会出现创建软链接失败等问题,切记切记!),开始下面的解压、编译、安装步骤。

1.解压

#tar zxvf wpa_supplicant-0.7.3.tar.gz
#tar zxvf openssl-0.9.8e.tar.gz

2.拷贝补丁

#cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/

3.创建ssl安装路径文件夹

#mkdir /home/mike/ssl

4.修改openssl Makefile文件

#cd openssl-0.9.8e

按下图内容修改交叉编译工具链

...
INSTALLTOP=/home/mike/ssl //此处改为自己创建的openssl安装路径
OPENSSLDIR=/home/mike/ssl //此处改为自己创建的openssl安装路径
...
//改为自己的交叉编译工具链路径
CC= /root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-gcc 
AR=/root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-ar $(ARFLAGS) r
RANLIB= /root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-ranlib
...

5.交叉编译&&安装

#make
#make install

        可能会在编译安装过程出现如下错误,

cms.pod around line 457: Expected text after =item, not a number
cms.pod around line 461: Expected text after =item, not a number
cms.pod around line 465: Expected text after =item, not a number
cms.pod around line 470: Expected text after =item, not a number
cms.pod around line 474: Expected text after =item, not a number
POD document had syntax errors at /usr/bin/pod2man line 69.
make: *** [install_docs] Error 1

        解决方法:执行下面命令并重新编译安装即可。

rm -f /usr/bin/pod2man 

        正常情况下会在/home/mike/ssl路径下生成如下内容,我们后面需要的是include和lib,

至此,openssl交叉编译及安装完成。

二、交叉编译wpa_supplicant

1.修改配置文件

#cd wpa_supplicant-0.7.3/wpa_supplicant
#cp defconfig .config

打开.config,增加如下内容,

CC= /root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-gcc -L/home/mike/ssl/lib/
CFLAGS += -I/home/mike/ssl/include/
LIBS += -L/home/mike/ssl/lib/

执行编译,

#make

成功后会生成如下所示文件(wpa_cli、wpa_passphrase、wpa_supplicant)

wpa_supplicant是关键可执行文件,后面读取配置文件并执行相关功能都是它,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。wpa_passphrase负责生成wpa_supplicant.conf文件(编译完成后有自带的一份该文件,支持不同的配置样式)。

三、拷贝可执行文件到开发板

        将这3个文件(wpa_cli、wpa_passphrase、wpa_supplicant)复制到开发板的/bin路径下,并赋予其可执行权限。

四、生成wpa_supplicant.conf文件

在开发板的/etc路径下执行如下命令,TPLINK为我所使用的交换机的牌子,wpa_passphrase用法可自行参考相关文档说明(也可自创该文件填写相关内容),

#wpa_passphrase TPLINK 874565412 >> wpa_supplicant.conf

此时在/etc路径下会生成wpa_supplicant.conf文件,内容会类似如下:

network={

     ssid="www.xxx.cn"

     #psk="1234567890"

psk=54deb3710e9ea2354e8d57e8bdb3b2a2127af44960d73216c3254ea213

}

五、运行验证

#wpa_supplicant -i eth0 -c /etc/wpa_supplicant.conf -B -Dwired

        无错误提示情况下,可以ping 180.101.50.242(百度IP)验证是否能成功访问,关机重启后默认还是会能正常访问。

        更复杂的认证协议、证书等功能还需继续深入学习,此篇文章只纯粹简单记录移植过程,验证设备是否能通过802.1x认证。

参考文章:

wpa_supplicant移植与使用 (YFW)-蒲公英云

嵌入式Linux移植WIFI调试工具wpa_supplicant ,wpa_cli,wpa_passphrase解决方法 NUC972 ARM9-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1151726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

激光雷达,被降本“牺牲”?

激光雷达,正在成为车企「价格战」的牺牲品。尤其是纯视觉方案带来的巨大显性降本效应,开始动摇车企的传感器配置策略。 本周,随着极越01的上市,相比去年发布的探月版车型39.98万的定价,大幅下降至24.99-33.99万&#…

【c++|opencv】二、灰度变换和空间滤波---1.灰度变换、对数变换、伽马变换

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 灰度变换、对数变换、伽马变换 1. 灰度变换 #include <iostream> #include <opencv2/opencv.hpp>using namespace std; using namespace c…

pytorch复现2_AlexNet

不涉及原理 AlexNet网络结构 代码&#xff1a; model&#xff1a; import torch.nn as nn import torchclass AlexNet(nn.Module):def __init__(self, num_classes1000, init_weightsFalse):super(AlexNet, self).__init__()self.features nn.Sequential(nn.Conv2d(3, 48, k…

mongdb 存在重复字段值,建立唯一索引失败

1. 插入两条相同的数据 db.user.insertOne({name:"test",age:30, })2. 创建索引 db.user.createIndex({name:1},{unique: true});3. 报错

《2023北京智慧城市创新应用案例集》丨附下载

✦ ✦✦ ✦✦ ✦✦ ✦ 建设数字中国是数字时代推进中国式现代化的重要引擎&#xff0c;是构筑国家竞争新优势的有力支撑。党的二十大报告提出要提高城市规划、建设、治理水平&#xff0c;“打造宜居、韧性、智慧城市”&#xff1b;要加快发展数字经济&#xff0c;促进数字经济…

常用 sqlite3 命令

本次将向您讲解 SQLite 编程人员所使用的简单却有用的命令。这些命令被称为 SQLite 的点命令&#xff0c;这些命令的不同之处在于它们不以分号 ; 结束。 让我们在命令提示符下键入一个简单的 sqlite3 命令&#xff0c;在 SQLite 命令提示符下&#xff0c;您可以使 用各种 …

PTA 树的同构

题目 给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2&#xff0c;则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的&#xff0c;因为我们把其中一棵树的结点A、B、G的左右孩子互换后&#xff0c;就得到另外一棵树。而图2就不是同构的。 现给定两棵树…

广播机制-广播接收者BroadcastReceiver

在Android中&#xff0c;广播是一种在组件之间传递消息的机制&#xff0c;例如电池电量低时会发送一条提示如果要接收并过滤广播中的消息&#xff0c;则需要使用Broadcast Receiver&#xff08;广播接收者&#xff09;。广播接收者是Android四大组件之一&#xff0c;通过广播接…

dockerfile中临时拉取gitlab代码

git clone https://<name>:<token>gitlab.com/<USER>/<REPO>.git

基于STM32F103C8T6的UAV飞控板硬件设计

一、主控单元&#xff1a; 主控单元基于意法半导体公司的STM32F103C8T6单片机进行设计。STM32F103C8T6DE 内核为ARM Cortex-M3&#xff1b;最大主频&#xff1a;72MHz &#xff1b;工作电压范围&#xff1a;2V~3.6V &#xff1b;程序存储容量&#xff1a;64KB&#xff1b; 程序…

qtableview委托应用

https://download.csdn.net/download/venice0708/88485153

Python构造代理IP池提高访问量

目录 前言 一、代理IP是什么 二、代理IP池是什么 三、如何构建代理 IP 池 1. 从网上获取代理 IP 地址 2. 对 IP 地址进行筛选 3. 使用筛选出来的 IP 地址进行数据的爬取 四、总结 前言 爬虫程序是批量获取互联网上的信息的重要工具&#xff0c;在访问目标网站时需要频…

【广州华锐互动】牛顿运动定律VR虚拟教学软件

在科技日新月异的今天&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为我们带来了前所未有的沉浸式体验。在教育领域&#xff0c;VR技术的应用也日益广泛&#xff0c;尤其是在物理教学中&#xff0c;牛顿运动定律VR虚拟教学软件为学生…

预制件二维码怎么生成

在建筑施工领域&#xff0c;预制构件的使用越来越广泛&#xff0c;它能够提高工程质量和施工效率&#xff0c;减少施工现场对环境的影响。通过凡尔码的二维码管理平台&#xff0c;用户可以实现预制构件的高效管理&#xff0c;并提升施工效率和施工质量 预制件二维码怎么生成 准…

org.springframework.cloud:spring-cloud-starter-openfeign:jar is missing详解

openfeign无法导入的问题 我感觉最近带的好几个新人在搭建springCloud基础框架的时候&#xff0c;会犯一个非常小的错误&#xff0c;导致进度卡住了。 这个错误就是Feign导入的错误&#xff1a; ‘dependencies.dependency.version’ for org.springframework.cloud:spring-c…

乐鑫 SoC 内存映射入门

微控制器 (MCU) 的性能和内存能力逐步提升&#xff0c;其复杂度也随之加大。特别是当用户需要配置内存管理单元来映射外部存储器芯片 (Flash/SPIRAM) 时&#xff0c;这种现象尤其明显。 开始在乐鑫 SoC 上运行 Zephyr RTOS 时&#xff0c;会发现这些 SoC 与 ARM 架构的 MCU 相…

Java进阶(HashMap)——面试时HashMap常见问题解读 结合源码分析

前言 List、Set、HashMap作为Java中常用的集合&#xff0c;需要深入认识其原理和特性。 本篇博客介绍常见的关于Java中HashMap集合的面试问题&#xff0c;结合源码分析题目背后的知识点。 关于List的博客文章如下&#xff1a; Java进阶&#xff08;List&#xff09;——面试…

CPU架构之x86解读

一&#xff0e;什么是x86架构 X86架构&#xff1a;是微处理器执行的计算机语言指令集&#xff0c;指一个intel通用计算机系列的标准编号缩写&#xff0c;也标识一套通用的计算机指令集。 编辑搜图 二、x86架构的优势 技术成熟&#xff1a;x86架构的芯片经过多年的发展&#…

Linux:KVM虚拟化

本章操作基于centos7系统 简介 KVM是Kernel Virtual Machine的简写&#xff0c;目前Redhat只支持在64位的Rhel5.4以上的系统运行KVM&#xff0c;同时硬件需要支持VT技术。KVM的前身是QEMU&#xff0c;在2008年被redhat公司收购并获得了一项hypervisor技术&#xff0c;不过redh…

UE学习记录08----Actor 绕指定Actor旋转

Sphere 以 Cube为中心点 在水平面 即 xy平面进行旋转 来源&#xff1a; UE4 actor绕着某个actor旋转 - 简书 (jianshu.com)