一. 简介
前面两篇文章实现了wpa_supplicant工具所依赖的两个库的移植。文章如下:
WIFI驱动移植实验: openssl库的移植(wpa_supplicant 依赖库)-CSDN博客
WIFI驱动移植实验: libnl 库的移植(wpa_supplicant 依赖库)-CSDN博客
本文开始实现 wpa_supplicant工具的移植。
二. WIFI驱动移植实验: wpa_supplicant工具的移植
接下来移植
wpa_supplicant
,
wpa_supplicant
源码我们已经放到了开发板光盘中,路径为:
1
、例程源码
->7
、第三方库源码
->wpa_supplicant-2.7.tar.gz
,
将
wpa_supplicant-2.7.tar.gz
拷贝到 Ubuntu系统的某个文件目录下
:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/tools$ cp /mnt/hgfs/Ubuntu_Shares/wpa_supplicant-2.7.tar.gz ./
输入如下命令进行解压:
tar -xvf wpa_supplicant-2.7.tar.gz
1. 配置 wpa_supplicant源码
解压完成以后,进入wpa_supplicant-2.7文件夹下,然后进行配置。
wpa_supplicant 的配置比较特殊,需要将 wpa_supplicant 下的 defconfig 文件拷贝一份并重命名为 .config,操作如下:
再进入 wpa_supplicant/目录下:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/tools/wpa_supplicant-2.7$ cd wpa_supplicant/
将 wpa_supplicant 下的 defconfig 文件拷贝一份并重命名为 .config:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/tools/wpa_supplicant-2.7/wpa_supplicant$ cp defconfig .config
2. 指定 交叉编译器,openssl库,libnl库与头文件路径
完成以后打开
.config
文件,在里面指定交叉编译器、
openssl、libnl
库和头文件路径,设置
如下:
CC = arm-linux-gnueabihf-gcc
#openssl库与头文件路径
CFLAGS += -I/home/wangtian/zhengdian_Linux/tools/openssl_tools/include
LIBS += -L/home/wangtian/zhengdian_Linux/tools/openssl_tools/lib -lssl -lcrypto
#libnl 库和头文件路径
CFLAGS += -I/home/wangtian/zhengdian_Linux/tools/libnl_tools/include/libnl3
LIBS += -L/home/wangtian/zhengdian_Linux/tools/libnl_tools/lib
CC
变量用于指定交叉编译器,这里就是
arm-linux-gnueabihf-gcc
,
CFLAGS
指定需要使用的库头文件路径,
LIBS
指定需要用到的库路径。
编译
wap_supplicant
的时候需要用到
openssl
和 libnl
库,所以 .config 文件
中指定了这两个的库路径和头文件路径。
3. 编译 wpa_supplicant源码
.config
文件配置好以后就可以编译
wpa_supplicant
了,使用如下命令编译:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/tools/wpa_supplicant-2.7/wpa_supplicant$ export PKG_CONFIG_PATH=/home/wangtian/zhengdian_Linux/tools/libnl_tools/lib/pkgconfig:$PKG_CONFIG_PATH
上面的操作是,我们使用
export
指定了
libnl
库的
pkgconfig
路径,环境变量
PKG_CONFIG_PATH
保存
着
pkgconfig
包路径。在 之前移植libnl库时(创建的 libnl_tools目录下)libnl_tools文件夹的 /lib 目录
下有个名为 “pkgconfig
”的目录:
编译
wpa_supplicant
的时候是需要指定
libnl
的
pkgconfig
路径,否则会提示“
libnl-3.0
”或者 “
libnl-3.0.pc
” 找不到等错误。
编译 wpa_supplicant源码,输入 "make"命令:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/tools/wpa_supplicant-2.7/wpa_supplicant$ make
编译完成以后,就会在本目录下生成
wpa_supplicant
和
wpa_cli
这两个软件:
将编译生成的
wpa_cli
和
wpa_supplicant
这两个文件,拷贝到开发板根文件系统的
/usr/bin
目录中,命令如下:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/tools/wpa_supplicant-2.7/wpa_supplicant$ sudo cp wpa_cli wpa_supplicant /home/wangtian/linux/nfs_File/rootfs/usr/bin/ -f
wpa_supplicant工具测试:
拷贝完成以后重启开发板!
输
入“
wpa_supplicant -v
” 命令,查看一下
wpa_supplicant
版本号。
如下图
所示:
可以看出, wpa_supplicant 的版本号输出正常,说明 wpa_supplicant 移植成功,接下来就是使用 wpa_supplicant 将开发板的 WIFI 链接到路由器上,实现 WIFI 上网功能。