- 简介
Wpa_supplicant是配置无线网卡连接wifi的工具,其依赖于libnl库和libopenssl库。 - 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文件拷贝到开发板文件系统
- 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
#将相关库函数拷贝到开发板
- 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/
- 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
}