Wpa_supplicant工具移植

  1. 简介
    Wpa_supplicant是配置无线网卡连接wifi的工具,其依赖于libnl库和libopenssl库。
  2. libnl库移植
    源码下载
#解压源码
tar xzf libnl-3.5.0.tar.gz 
#进入mulu 
cd libnl-3.5.0
#创建安装文件夹
mkdir out_dir
#配置
#--host 交叉编译器前缀(目标机)
#--prefix 安装路径
./configure --host=arm-linux-gnueabihf --prefix=$(pwd)/out_dir/
#编译安装
make && make install
#将out_dir中对应lib文件拷贝到开发板文件系统
  1. libopenssl库移植
    源码下载
#解压
tar xzf openssl-1.1.1g.tar.gz
#进入目录
cd openssl-1.1.1g
#创建安装文件夹
mkdir out_dir
#配置
#shared 生成动态链接库
#--prefix 安装目录
#--cross-compile-prefix 交叉编译工具链
#no-asm 在交叉编译过程中不使用汇编代码代码加速编译过程
./config shared no-asm --prefix=$(pwd)/out_dir/ --cross-compile-prefix=arm-linux-gnueabihf- 
#打开生成的Makefile 找到带-m64的选项,将-m64参数删除
#
#否则会出现错误:arm-linux-gnueabihf-gcc: error: unrecognized command line option '-m64'
vim Makefile
#编译
make && make install
#将相关库函数拷贝到开发板
  1. Wpa_supplicant库移植
    源码下载
#解压
tar xzf wpa_supplicant-2.9.tar.gz
#进入目录
cd wpa_supplicant-2.9/wpa_supplicant/
#复制配置信息
cp defconfig .config

#修改.config 添加交叉编译工具及openssl和libnl库的头文件及库路径
#在CONFIG_LIBNL32=y 后面添加如下环境变量
CC=arm-linux-gnueabihf-gcc
#openssl lib and include path
CFLAGS += -I openssl-1.1.1g/out_dir/include/
LIBS += -L openssl-1.1.1g/out_dir/lib -lssl -lcrypto
#libnl lib and include path
CFLAGS += -I libnl-3.5.0/out_dir/include/libnl3
LIBS += -L libnl-3.5.0/out_dir/lib

#添加libnl库打包配置文件路径环境变量PKG_CONFIG_PATH
export PKG_CONFIG_PATH=libnl-3.5.0/out_dir/lib/pkgconfig:$PKG_CONFIG_PATH
#编译
make 
#出错
dbus/dbus_dict_helpers.c:10:23: fatal error: dbus/dbus.h: No such file or directory
#打开.config注释掉两个配置选项
#CONFIG_CTRL_IFACE_DBUS_NEW=y
#CONFIG_CTRL_IFACE_DBUS_INTRO=y
#继续编译
make
#将生成的bin文件复制到开发板文件系统
cp wpa_cli wpa_supplicant wpa_passphrase XXX_rootfs/usr/bin/
  1. Wpa_supplicant命令使用
命令描述
wpa_supplicant搜索、设置、和连接网络wifi实际干活的工具,即service端
wpa_cli连接到service端,控制服务器干活,即client端
wpa_passphrase根据wifi名称和密码,生成加密psk

wpa_supplicant:

#启动wlan0
ifconfig wlan0 up
#创建并修改wifi连接文件
vi /etc/wifi/wpa_supplicant.conf
#在wpa_supplicant.conf文件中添加内容
#ctrl_interface socket通讯文件夹
#注意缩进的地方不要用tab键,用空格(四空格)
ctrl_interface=/var/run/wifi
ap_scan=1
network={
    ssid="wifi名字"
    psk="密码"
}
#创建ctrl_interface socket通讯文件夹
mkdir /var/run/wifi -p

#连接wifi
#-D 驱动类型名字有wext和nl80211类型,RTL8723BU给的驱动貌似不支持nl80211类型
wpa_supplicant -D wext -c /etc/wifi/wpa_supplicant.conf -i wlan0 &

#ip和网关根据自己路由情况设置
#设置ip地址
ifconfig wlan0 192.168.1.XXX
#设置网关
route add default gw 192.168.1.1 wlan0
#ping测试
ping -I wlan0 www.baidu.com

#自动获取ip地址命令
udhcpc -i wlan0

wpa_cli:
参考文章

wpa_passphrase:
参考
命令格式 wpa_passphrase [ ssid ] [ passphrase ]

#例子
wpa_passphrase Mo 123456789
#生成
network={
        ssid="Mo"
        #psk="123456789"
        psk=df7ede7b21b3a810950b9828bd5623c62d06f417ee6c487f3ed1c76432190613
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值