导航

概述

wpa_supplicant是一个连接、配置WIFI的工具,它主要包含wpa_supplicant与wpa_cli和wpa_passphrase三个程序. 可以通过wpa_cli来进行WIFI的配置与连接,前提要保证wpa_supplicant正常启动, Linux无线驱动接口有两种标准接口,wext(Wireless Extensions无线扩展接口)和nl80211接口,在移植wpa时可以选择对这两种接口的支持,当然最终能使用哪种接口还要看网卡驱动支持哪种,最终都是通过CFG80211这一层来操作的。

由于想要使用我的FS4412开发板上的MT7601U网卡,而板子上的linux又没有现成的无线WIFI的管理工具,需要移植WPA_SUPPLICANT,而WPA_SUPPLICANT需要依赖两个东西,一个是OpenSSL,一个是libnl库,当然如果你不想支持nl80211接口的话libnl库可以不需要。

OpenSSL移植

下载Openssl

OpenSSL官网下载地址:https://www.openssl.org/source/

打开上述官网地址,选择openssl-1.1.1d下载

下载完成后 用 下面的命令解压缩

tar zxvf openssl-1.1.1d.tar.gz

配置Openssl

进入刚解压的目录cd openssl-1.0.2l/,执行下面指令,做相应的配置:

./config no-asm shared no-async --prefix=$(pwd)/install --cross-compile-prefix=arm-linux-

no-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是对arm格式不支持的。

no-async: 交叉编译工具链没有提供GNU C的ucontext库

shared :生成动态连接库。

–prefix :指定make install后生成目录的路径,不修改此项则默认为OPENSSLDIR目录(/usr/local/ssl)。

打开Makefile,删除里面所有的-m64和-m32编译选项。(可用VIM打开MAKEFILE后搜索-m32和-m64,然后删除即可)

编译Openssl

执行make编译工程;

执行make install,在源文件路径会生成一个install文件。

移植到开发板

拷贝libcrypto.so.1.1 和 libssl.so.1.1到开发板文件系统的lib目录中。可以是/lib 或者/usr/lib

libnl库移植

下载libnl库

libnl下载地址: http://www.infradead.org/~tgr/libnl/

选择libnl3.2下载

执行下面命名解压缩:

tar zxvf libnl-3.2.25.tar.gz

配置libnl库

进入刚解压的目录cd libnl-3.2.25,执行下面指令,做相应的配置:

./configure --prefix=$(pwd)/__install --enable-shared --enable-static

其中–prefix=$(pwd)/__install指定了编译出来的库存放的路径

编译libnl库

make CC=arm-linux-gcc

这里CC要指定你的交叉编译工具链路径

make install

执行make install将库文件安装到指定目录

移植到开发板

将生成的install目录下面的lib库全部放到开发板的lib目录中去即可。

wpa_supplicant移植

下载wpa_supplicant

tar xvzf wpa_supplicant-2.9.tar.gz

配置wpa_supplicant

进入刚解压的目录cd wpa_supplicant-2.9,执行下面指令,做相应的配置:

进入最里面的 wpa_supplicant-2.9/wpa_supplicant

cd wpa_supplicant

拷贝默认配置:

cp defconfig .config

打开.config,需要修改的配置如下:

CONFIG_DRIVER_WEXT=y          //使用WEXT通过ioctl和驱动通信,典型工具ifconfig等

CONFIG_DRIVER_NL80211=y      //使用NL80211通过一个特殊的socket和驱动打通信,典型工具包括iwconfig等

CFLAGS += -I…/…/libnl-3.2.25/install/include/     //CONFIG_DRIVER_NL80211=y时。需指定libnl头文件

LIBS += -L…/…/libnl-3.2.25/install/lib/      // CONFIG_DRIVER_NL80211=y时,需指定libnl库

CONFIG_LIBNL32=y      //CONFIG_DRIVER_NL80211=y时,需指定libnl库版本

CC = arm-linux-gcc      // 配置编译器

CONFIG_TLS = openssl      // 配置TLS实现,可选有openssl、internal,选择openssl时需指定openssl库,如果你移植的是2.9的话 此处选择openssl,internal的话我试过编译会出现问题。

CFLAGS += -I…/…/openssl-1.1.1/install/include/      // CONFIG_TLS = openssl时。需指定openssl头文件

LIBS += -L…/…/lopenssl-1.1.1/install/lib/        // CONFIG_TLS= openssl时,需指定openssl库

注释掉下面这两行 或则需要移植dbus库

#CONFIG_CTRL_IFACE_DBUS_NEW=y

#CONFIG_CTRL_IFACE_DBUS_INTRO=y

可以根据自己的需求选择配置 CONFIG_DRIVER_WEXT 、CONFIG_DRIVER_NL80211 、CONFIG_TLS。

编译wpa_supplicant

执行 make -j8 加速编译wpa_supplicant。

移植到开发板

将可执行程序wpa_supplicant、wpa_passphrase、wpa_cli拷贝到开发板文件系统/bin目录下

到此Openssl,libnl,wpa_supplicant已经移植全部移植完成,剩下的就是怎么使用wpa_supplicant去管理我们的无线WIFI了。

linux wifi管理工具下载,(Linux无线网卡WIFI上网 二 )WPA_SUPPLICANT——Linux下的wifi管理工具移植-Go语言中文社区...相关推荐

  1. mac go linux 目标,Mac下Golang安装以及目录结构-Go语言中文社区

    1.安装步骤 a.下载地址  下载SDK后,解压到自己喜欢的目录(后面配置PATH需要用到) b.配置PATH,有很多个地方可以配置具体可参考此链(PATH配置详解),我是直接修改的~/.bash_p ...

  2. linux 创建中文文件夹,linux下创建文件和文件夹-Go语言中文社区

    使用linux系统会有一些常见的命令,譬如说,创建文件夹,创建文件,这些命令都是比较常见的. 方法/步骤 首先说一下touch 创建二进制文件,用法就非常的简单,touch+文件名   之间一定要空格 ...

  3. php mysql.so 下载_Linux安装php-mysql提示需要:libmysqlclient.so.18()(64bit)的解决办法-Go语言中文社区...

    一.贴上报错: 错误:软件包:2:postfix-2.10.1-6.el7.x86_64 (@anaconda) 需要:libmysqlclient.so.18()(64bit) 可用: 1:mari ...

  4. windows远程android传输文件,电脑(Linux/Windows)使用SSH远程登录安卓(Android)手机实现无线传输和管理文件(图文详解)-Go语言中文社区...

    电脑(Linux/Windows系统)使用SSH远程登录安卓(Android)手机实现无线传输和管理文件(图文详解) 温馨提示 本文只针对安卓(Android)手机!iPhone或者WP的手机用户,请 ...

  5. 树莓派linux iso镜像下载,树莓派入门(一) - 下载安装系统镜像,Raspbian和Centos-Go语言中文社区...

    简述 本节我们将讲解树莓派如何烧录镜像,这也是使用树莓派的第一步. 我们这次分别讲解Raspbian官方系统和Centos系统的安装. 树莓派还有很多版本的系统,可以查看http://shumeipa ...

  6. linux系统pcb软件下载,开源PCB设计软件KiCad致力于下一个大版本的发布

    KiCad仍然是PCB设计和其他功能的领先开源电子设计套件.KiCad在2018年取得了成功,System76甚至使用了该软件作为与Thelio台式计算机一起设计的子板PCB的一部分,但展望未来,开发 ...

  7. linux 安装centos7,linux CentOs7 安装 Autojump 方便高效省事-Go语言中文社区

    一.简介 autojump是一个命令行工具,它允许你可以直接跳转到你喜爱的目录,而不用管你现在身在何处. 有多种安装手法,但我只推荐我接下来介绍的一种: 首先确定你的系统开启EPEL保证有软件包源(在 ...

  8. linux 运行go文件路径,go程序部署到linux上运行-Go语言中文社区

    go 语言版本:go1.9.2 开发环境:win10 部署环境:ubuntu 14.04.6 一.win10上的操作 1.在src目录下依次执行set CGO_ENABLED=0.set GOOS=l ...

  9. xstart连不上linux_【Tools系列】使用xstart远程连接linux图形用户界面以及rxvt终端配置-Go语言中文社区...

    DATE: 2019-7-28 1.使用xstart远程连接linux图形用户界面 使用xstart已经成功远程连接到了Linux中,但是界面看起来有些丑,下面通过rxvt终端配置进行美化. 2.rx ...

最新文章

  1. python自学argparse模块
  2. c++在txt中每行写入数据和每行输出
  3. Unity3d 去掉exe版本的边框
  4. 【数据结构与算法】之深入解析“石子游戏VII”的求解思路与算法示例
  5. 使用 C# 运行符号测试
  6. 面试官问我:什么是JavaScript闭包,我该如何回答
  7. wpp助手怎么连接服务器,aewpp.com
  8. C语言 · 8皇后问题改编
  9. Shell脚本查询进程存活信息
  10. MYSQL5.5.48编译安装
  11. web渗透测试中WAF绕过讲解(二)基于HTTP协议绕过
  12. 打开caj文件显示服务器忙,欢迎使用CAJViewer-常见问题
  13. 基于CCS工程MSP430串口升级(二)
  14. Hibernate 中出现表名(XXX) is not mapped 问题
  15. 惠普linux进入bios设置u盘启动,如何进入bios设置,手把手教你惠普如何进入bios设置u盘启动...
  16. 构建Lua解释器Part8:构建完整的语法分析器(下)
  17. roll() java_java.util.Calendar.roll(int field,int amount)方法实例
  18. 困惑已久?上拉电阻下拉电阻详解
  19. C语言学习第008课——内存和指针
  20. keil编程问题 -- main.c(75): warning: #223-D: function “XXX“ declared implicitly

热门文章

  1. tensorflow 物体识别
  2. Python 异步:完整教程
  3. 【小记】为什么jvm的新生代要分为一个Eden和两个Survivor
  4. 2.SQC概念和方法
  5. CSDN早报-2019-04-26
  6. ipconfig中都是什么意思,如何配置虚拟机,网络知识你懂多少?
  7. java e4_请问,eclipse e4 究竟是什么?愿能集思广益
  8. 3行Python代码达到月入过万案例---起名
  9. SQLite Expert安装与注册
  10. http://show.ku6.com/app.html,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...