WIFI工具移植之IW工具移植

移植wifi工具之前,大家可以看下http://blog.csdn.net/lidroid/article/details/46723099这篇。

这里所谓的wifi的sta工具其实就是对应无线的认证和加密方式,有下面两个工具来实现:

1、iw工具:iw工具是iwconfig的替代者,iw可以用于2种“认证和加密”,分别是open(开放系统认证+有效等线加密)、wep方式(共享秘钥认证+有效等线加密)。

2、wap_supplicant工具:可以用于四种认证方式,分别是open、wep、wpa、wpa2无线加密方式。

其中上面两种工具的使用可以在https://wireless.wiki.kernel.org/welcome查看。下面我们来讲讲把其移植到a9开发板的过程。

环境介绍:

宿主机 :redhat5.3

交叉编译器 :arm-linux-gcc4.5.1

目标板  :tiny4412开发板

一、移植iw到a9开发板上

1、前提工作

移植iw库需要libnl库的支持,所以必须先一直libnl库

2、移植libnl库

2.1、下载libnl库

在http://www.infradead.org/~tgr/libnl/files/可以下载到各个版本的libnl库,这里选择“libnl-3.2.24.tar.gz

2.2、配置安装libnl库(交叉编译)

2.2.1、 解压libnl-3.2.24.tar.gz,进入libnl-3.2.24目录
[root@localhost libnl-3.2.24]# ./configure --host=arm-linux --prefix=$PWD/tmp 
[root@localhost libnl-3.2.24]# make
Making all in include
make[1]: Entering directory `/work/wifi/sta/libnl-3.2.24/include'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/work/wifi/sta/libnl-3.2.24/include'
Making all in lib
make[1]: Entering directory `/work/wifi/sta/libnl-3.2.24/lib'
  GEN      route/cls/ematch_grammar.c
flex: unknown flag '-'.  For usage, try
        flex --help
make[1]: *** [route/cls/ematch_grammar.c] 错误 1
make[1]: Leaving directory `/work/wifi/sta/libnl-3.2.24/lib'
make: *** [all-recursive] 错误 1
配置libnl后,编译出现上面蓝色的错误,主要是因为redhat5.3版本的flex工具比较老,更新就行了。下面先更新下flex工具。
2.2.2、更新redhat5.3的flex工具
下载最新的flex库安装到redhat5.3,可以从http://sourceforge.net/projects/flex/files获取
        [root@localhost wifi]# tar xzf flex-2.5.39.tar.gz
[root@localhost wifi]# cd flex-2.5.39
[root@localhost flex-2.5.39]# ./configure                    //配置,默认x86平台
[root@localhost flex-2.5.39]# make && make install//编译并且安装
等待安装完毕后,注销,使安装的flex版本生效,使用flex -V来查看是否生效。成功如下:
[root@localhost sta]# flex -V
flex 2.5.39
 
2.2.3、重新编译libnl库
[root@localhost libnl-3.2.24]# make
Making all in include
make[1]: Entering directory `/work/wifi/sta/libnl-3.2.24/include'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/work/wifi/sta/libnl-3.2.24/include'
Making all in lib
make[1]: Entering directory `/work/wifi/sta/libnl-3.2.24/lib'
  GEN      route/cls/ematch_grammar.c
  GEN      route/cls/ematch_syntax.c
route/cls/ematch_syntax.y:31.9-16: syntax error, unexpected identifier, expecting string
make[1]: *** [route/cls/ematch_syntax.c] 错误 1
make[1]: Leaving directory `/work/wifi/sta/libnl-3.2.24/lib'
make: *** [all-recursive] 错误 1
[root@localhost libnl-3.2.24]#
出现上面问题,这个问题比较纠结谷歌了很久,才找到原来是bison工具版本太低了,升级一下就行了。

2.2.4、升级BISON库
下载最新的bison库,可以从http://ftp.gnu.org/gnu/bison/获取
[root@localhost wifi]# tar xzf bison-3.0.4.tar.gz
[root@localhost wifi]# cd bison-3.0.4
[root@localhost bison-3.0.4]# ./configure
[root@localhost bison-3.0.4]# make && make install


2
.2.5、再次重新编译libnl库
[root@localhost libnl-3.2.24]# make
经过漫长的等待(对于一个期盼其不要出错的人来说),终于编译成功,接下将其安装
[ root@localhost libnl-3.2.24]# make install   //安装到当前路径的tmp下面

3、移植iw工具

3.1、获取iw工具

可以从https://www.kernel.org/pub/software/network/iw/下载iw-4.0.tar.gz

3.2、配置和安装(交叉编译)

[root@localhost sta]# tar xzf iw-4.0.tar.gz
[root@localhost sta]# cd iw-4.0
   [root@localhost iw-4.0]# export PKG_CONFIG_PATH=/work/wifi/sta/libnl-3.2.24/tmp/lib/pkgconfig:$PKG_CONFIG_PATH
[root@localhost iw-4.0]# make CC=arm-linux-gcc
编译完成后生成iw命令,需要将其拷贝到开发板去运行。

4、启动开发板上运行

[root@zxl /]# iw dev wlan0 scan
iw: error while loading shared libraries: libnl-genl-3.so.200: cannot open shared object file: No such file or directory
  出现上面的错误收libnl的库没有,那么把移植的libnl库拷贝到开发板的网络文件系统去,如下:
 
      重新运行iw工具。
     [root@zxl /]# iw dev wlan0 scan
     command failed: No such device (-19)
    再次记录这个问题,有空再解决。
 


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值