wpa_supplicant工具移植到嵌入式设备(代码片段)

正在起飞的蜗牛 正在起飞的蜗牛     2022-12-16     362

关键词:

1、wpa_supplicant源码下载

(1)源码下载地址:http://w1.fi/releases/
(2)本文是以wpa_supplicant-2.6.tar.gz版本进行移植;

2、编译openssl

2.1、确定适配的openssl版本

Optional libraries for EAP-TLS, EAP-PEAP, and EAP-TTLS:
- OpenSSL (tested with 1.0.1 and 1.0.2 versions; assumed to
  work with most relatively recent versions; this is likely to be
  available with most distributions, http://www.openssl.org/)
- GnuTLS
- internal TLSv1 implementation

(1)在wpa_supplicant源码的README说明文档中对适配的openssl版本做了说明,从上面可以2.6版本的wpa_supplicant适配1.01和1.0.2版本的openssl;
(2)如果没有在编译wpa_supplicant源码没有指定openssl,则会报错:…/src/crypto/tls_openssl.c:19: fatal error: openssl/ssl.h: No such file or directory
(3)源码下载地址:http://www.openssl.org/

2.2、修改Makefile

#修改安装目录
# INSTALL_PREFIX is for package builders so that they can configure
# for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/.
# Normally it is left empty.
INSTALL_PREFIX=
INSTALLTOP=/home/aston/S5PV210/USB_WIFI/openssl/openssl_install

# Do not edit this manually. Use Configure --openssldir=DIR do change this!
OPENSSLDIR=/home/aston/S5PV210/USB_WIFI/openssl/openssl_install

# 修改编译链
CC= /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc
AR= /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-ar $(ARFLAGS) r
RANLIB= /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-ranlib
NM= /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-nm

在主Makefile中修改openssl的安装目录和编译链;

2.3、删除掉文档安装

#install: all install_docs install_sw
install: all install_sw

(1)在安装openssl时会报错:POD document had syntax errors at /usr/bin/pod2man line 69
(2)是因为安装文档时报错,说明文档不是必须的且我们编译openssl是为了编译wpa_supplicant工具,不需要说明文档,将install目标后面的依赖install_docs删除;

2.4、编译指令

# 编译opensll源码
root@Ubunut220401:openssl-1.0.1# make -4

# 安装openssl
root@Ubunut220401:openssl-1.0.1# make install

# 安装目录的产物
root@Ubunut220401:openssl_install# ls
bin  certs  include  lib  man  misc  openssl.cnf  private

3、wpa_supplicant源码编译

3.1、生成配置文件

Building and installing
-----------------------

In order to be able to build wpa_supplicant, you will first need to
select which parts of it will be included. This is done by creating a
build time configuration file, .config, in the wpa_supplicant root
directory. Configuration options are text lines using following
format: CONFIG_<option>=y. Lines starting with # are considered
comments and are ignored. See defconfig file for an example configuration
and a list of available options and additional notes.

The build time configuration can be used to select only the needed
features and limit the binary size and requirements for external
libraries. The main configuration parts are the selection of which
driver interfaces (e.g., nl80211, wext, ..) and which authentication
methods (e.g., EAP-TLS, EAP-PEAP, ..) are included.

(1)上面是摘抄自wpa_supplicant源码的README说明文档,里面是关于编译wpa_supplicant源码的步骤说明,其中要求必须在编译前先生成配置文件.config,这和内核编译的机制是一样的,.config里是对wpa_supplicant工具的配置;
(2)在源码中有默认的配置文件defconfig ,如果我们没有特殊需求则可以直接将defconfig文件拷贝成.config文件;
(3)在主Makefile中会引用.config文件,命令:-include .config

3.2、修改编译链

ifndef CC
CC=gcc
endif

(1)在主Makefile中有编译链的设置,如果在调用Makefile时没有指定编译链则使用gcc,所以我们只需要在调用时指定编译链即可;
(2)例如:make CC=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc

3.3、设置openssl的目录

# 指定openssl头文件的路径
CFLAGS+=-I /home/aston/S5PV210/USB_WIFI/openssl/openssl_install/include

# 指定openssl库的路径
LIBS+=-L /home/aston/S5PV210/USB_WIFI/openssl/openssl_install/lib

3.4、取消CONFIG_DRIVER_NL80211配置

# Driver interface for Linux drivers using the nl80211 kernel interface
#CONFIG_DRIVER_NL80211=y

(1)在编译时报错:…/src/drivers/driver_nl80211.c:17: fatal error: netlink/genl/genl.h: No such file or directory
(2)报错的原因是开启了CONFIG_DRIVER_NL80211配置,这个配置是依赖libnl.a库,但是我当前并没有libnl.a库,所以报错;
(3)我不想去移植libnl.a库且也用不到 nl80211内核接口,所以我将此配置关闭;

推荐

给大家推荐一个学校嵌入式知识的网站,博主在大学时候学习嵌入式知识、找工作的时候都在用这个网站,网站里有C语言、Linux等等的笔试题、面试常问问题等等知识,无论是学习基础知识、面试刷题、交流工作经验都是不错的选择。大家一起进步,欢迎留言交流。
链接:学习神器跳转

i.mx6ull应用移植|移植wpa_supplicant到linux开发板(2.7版本)(代码片段)

一、wpa_supplicantwpa_supplicant是跨平台的WPA请求者程序(supplicant),支持WEP、WPA和WPA2(IEEE802.11i).。可以在桌面、笔记本、嵌入式系统中使用。wpa_supplicant是在客户端使用的IEEE802.1X/WPA组件,支持与WPAAuthenticator的交互&#x... 查看详情

usb接口wifi(mt7601芯片)的驱动源码移植过程详解(驱动源码编译wpa_supplicant工具交叉编译文件系统移植)(代码片段)

...源码,依赖内核源码树编译并加载;(3)交叉编译wpa_supplicant工具,移植到根文件系统里;(4)添加驱动和wpa_supplicant工具依赖的配置文件;(5)在终端手动执行命令进行上网;(6)在启动脚步中添加配置网卡并上... 查看详情

移植wpa_supplicant2.5到arm开发板

 编译libnl1-1:./configure--host=arm-linux--enable-static--prefix=/usr/local/sslCC=arm-linux-gnueabihf-gcc编译时出现错误:../include/netlink-local.h:239:11:error:‘ULONG_MAX’undeclared(firstuseinthisfunction 查看详情

将 Android 移植到 nanoTesla A8

...间】:2016-11-1715:40:43【问题描述】:我们的组织中有一个嵌入式设备,它有一个nanoTeslaA8板并运行linux。我们想在设备上运行android来为我们的设备开发android应用程序。可以在nanoTesla上运行Android吗?nanoTesla上是否有任何可用于Andro... 查看详情

x86平台代码移植到嵌入式平台[交叉编译三方库](代码片段)

0背景:windows平台下用ide开发好程序,需要移植到tda4嵌入式平台1不更换编译工具链,写cmake管理项目在Ubuntu下新建文件,把代码copy过来下载三方库源码,用PC端默认的GccG++编译器编译库写cmake管理现有工程,确认cmake可以用2找到... 查看详情

移植freertos到stm32

...植FreeRTOS到STM32单片机上引言介绍什么是RTOS?为什么嵌入式设备往往使用RTOS?FreeRTOS具体步骤总结引言本文详细介绍如何移植FreeRTOS到STM32单片机上。移植操作系统是嵌入式开发的入门基础,单片机和嵌入式在物理上其... 查看详情

移植freertos到stm32

...植FreeRTOS到STM32单片机上引言介绍什么是RTOS?为什么嵌入式设备往往使用RTOS?FreeRTOS具体步骤总结引言本文详细介绍如何移植FreeRTOS到STM32单片机上。移植操作系统是嵌入式开发的入门基础,单片机和嵌入式在物理上其... 查看详情

opencore-amr移植至嵌入式设备

...efix“设定的目录中查看编译好的库文件了。1.相比于x86,嵌入式平台需要指定交叉编译器进行配置。请确保环境变量中有交叉编译器的路径。如果有“configure:error:C++compilercannotcreateexecutables”的错误提示,并且config.log中的报错信... 查看详情

《基于armcortex-a9的嵌入式linux内核移植研究与实现》

[1]罗名驹.基于ARMCortex-A9的嵌入式Linux内核移植研究与实现[D].广东工业大学,2017.文章目录​​移植环境搭建​​​​设备树​​​​uboot​​​​内核移植​​​​根文件系统构建​​移植环境搭建1.ubuntu安装嵌入式开发通常是在... 查看详情

交叉编译vim并移植到arm嵌入式linux系统

   原创作品,允许转载,转载时请务必以超链接形式标明文章、作者信息和本声明,否则将追究法律责任。   众所周知,vim是vi的增强版本,实际体验要比vi好用很多,由于笔者为ARM系统制作的基于busybox的文件系统... 查看详情

嵌入式设备移植触摸屏驱动

...言本文不是讲解触摸屏驱动的细节知识,介绍的是在嵌入式开发中如何快速的移植一款新的触摸屏的驱动。在实际的嵌入式开发中,可能会遇到设备更换一款新的触摸屏,这时候就需要进行快速的触摸屏的驱动移植。... 查看详情

无法连接到 wpa_supplicant:wlan0 - 重试

】无法连接到wpa_supplicant:wlan0-重试【英文标题】:Couldnotconnecttowpa_supplicant:wlan0-re-trying【发布时间】:2016-03-2002:47:36【问题描述】:我在嵌入式设备上工作,我正在使用wpa_supplicant配置WLAN模块(QCA6174-ath10k驱动程序)。我加载了... 查看详情

嵌入式linux根文件系统移植——根文件系统简介

嵌入式Linux根文件系统移植(二)——根文件系统简介    根文件系统是内核启动时挂载的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的... 查看详情

成功移植sqlite3到armlinux开发板

...,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作... 查看详情

qtopia移植

Qtopia是Trolltech公司为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台,Qtopia包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。下面便是他的移植过程。硬件s3c2410   &n... 查看详情

i.mx6ull驱动开发1——字符设备开发模板

之前的几篇文章(从i.MX6ULL嵌入式Linux开发1-uboot移植初探起),介绍了嵌入式了Linux的系统移植(uboot、内核与根文件系统)以及使用MfgTool工具将系统烧写到板子的EMMC中。本篇开始介绍嵌入式Linux驱动开发。内容较多,先看目录:... 查看详情

嵌入式设备中支持国密算法的方法

...须要面对的难题。现在为大家准备了一个系列文章,介绍嵌入式设备中移植国密算法的方法。简单来说,分为三种方法:1、移植Miracl库2、移植Openssl库3、使用加密芯片下面进 查看详情

qt在arm下使用wpa_supplicant连接wifi,wpa_cli操作(代码片段)

文章目录前言使用wpa_supplicant连接wifiwpa_supplicant.conf的编写wpa_cli操作QT执行shell脚本或者执行linux指令前言最近因为搞嵌入式项目,需要蓝牙配置wifi连接,所以得使用Qt连接Linux(Arm平台MIPS架构)下的WIFI操作,关于Qt移植MIPS(Arm),可以... 查看详情