嵌入式Linux移植WIFI调试工具wpa_supplicant ,wpa_cli,wpa_passphrase解决方法 NUC972 ARM9

前言:作者在调试ARM9板上WIFI驱动时,发现提供的wireless tools工具下的iwconfig,iwlist等等无法胜任,无法连接到WPA/WPA2等加密网络,这怎么办?后来了解到有wpa_supplicant强大的工具,可以连接iwconfig不能连接的网络,但是网上一大堆教程,有的不适用,版本不同编译方法也不同,编译不通过,下面列出具体的版本,按照流程即可编译成功。

  

一、从官网下载源码

       下载wpa_supplicant-0.7.3.tar.gz (记得从下载旧版本里面找到0.7.3版本,其他版本不确定方法是否相同)

       下载openssl-0.9.8e.tar.gz

       下载完这两个压缩包后移动到虚拟机Ubuntu下面,然后解压:tar zxvf   .......tar.gz

二、安装openssl库

  首先要将wpa_supplicant中的补丁复制到openssl-0.9.8e/文件夹中

       # cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/

       #cd openssl-0.9.8e/

       #mkdir /home/work/ssl   (临时安装库的位置,目录位置可以自己定义,后面待会会用到这个文件夹)

注:作者用的是arm-linux-gcc交叉编译器,如果有不同替换下面CC,或者可以用编辑器编辑makefile方便搜索,原文件下找到非注释部分修改

       #vim Makefile

               CC= arm-linux-gcc

               AR= arm-linux-ar $(ARFLAGS) r

               RANLIB= arm-linux-ranlib

               INSTALLTOP=/home/work/ssl       (之前创建的目录,括号不要复制进去!!!)

               OPENSSLDIR=/home/work/ssl     (之前创建的目录,括号不要复制进去!!!)

       #make

       #make install

        编译安装完成后就能在我们建立的文件夹下找到我们编译好的库

三、编译wpa_supplicant工具

  进入到wpa_supplicant-0.7.3.tar.gz解压生成的wpa_supplicant-0.7.3/wpa_supplicant目录中:

       #cp defconfig        .config

       #vi  .config

               CC= arm-linux-gcc -L/home/work/ssl/lib/

               CFLAGS += -I/home/work/ssl/include/  (之前创建的目录,注意include/和lib/,括号不要复制进去!!!)

               LIBS += -L/home/work/ssl/lib/

       #make

       编译完成后,wpa_supplicant的源程序文件夹下可以看到三个主要的可执行WIFI调试工具:wpa_supplicant,wpa_passphrase和wpa_cli。wpa_supplicant是核心的程序,wpa_supplicant和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。

到这里结束了?等等,看下我们三个工具的大小,NND竟然超过2M了,这在资源有限的嵌入式板子上可不小,相当于一个庞然大物,别急,有办法收拾它们。

arm-linux-strip wpa_suppiant

arm-linux-strip wpa_cli

arm-linux-strip wpa_passphrase

arm-linux-是自己电脑上的交叉编译器前缀,根据自己情况修改,arm-linux-strip主要是去掉工具中的调试信息输出,现在再看下是不是小多了?

 

接下来将这三个文件复制到开发板的/bin/文件夹下

然后进入/etc/目录:

接着

#wpa_passphrase TPLINK qq272726379 >> wpa_supplicant.conf

此时将在wpa_supplicant.conf文件中生成:

network={

     ssid="www.forwhat.cn"

     #psk="1234567890"

psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba

}

执行:wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf &

然后连接成功,udhcpc -i wlan0   

OK!自动获取ip和dns成功,ping www.baidu.com成功

 

你可能感兴趣的:(嵌入式Linux移植WIFI调试工具wpa_supplicant ,wpa_cli,wpa_passphrase解决方法 NUC972 ARM9)