移植wireless_tools工具(iwconfig/iwevent/iwgetid/iwlist/iwpriv/iwspy)

在WiFi调试过程中会用到iwpriv相关的工具。Android系统本身是不支持wireless_tools工具的。所以要移植wireless_tools。以下重点讲解移植过程:

1、 下载wireless_tools
下载地址: https://hewlettpackard.github.io/wireless-tools/wireless_tools.29.tar.gz
这里下载:wireless_tools.29.tar.gz

2、 解压wireless_tools.29.tar.gz到Android SDK的external目录下

$cd external
$tar -xvf wireless_tools.29.tar.gz
$mv wireless_tools.29 wireless_tools

3、创建Android.mk

 $cd external/wireless_tools
$vim Android.mk

Android.mk增加以下内容:

LOCAL_PATH:=$(call my-dir)

# iwlib
include $(CLEAR_VARS)

LOCAL_SRC_FILES := iwlib.c

LOCAL_CFLAGS += -Wno-parentheses-equality -Wno-tautological-compare -Wno-self-assign \
                -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \
                -Winline -MMD -fPIC
LOCAL_STATIC_LIBRARIES := libcutils libc libm

LOCAL_MODULE := libiw
LOCAL_MODULE_TAGS :=optional

include $(BUILD_STATIC_LIBRARY)

# iwconfig
include $(CLEAR_VARS)

LOCAL_SRC_FILES := iwconfig.c

LOCAL_CFLAGS += -Wno-parentheses-equality -Wno-tautological-compare -Wno-self-assign \
                -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \
                -Winline -MMD -fPIC

LOCAL_STATIC_LIBRARIES := libcutils libc libm libiw
LOCAL_FORCE_STATIC_EXECUTABLE := true

LOCAL_MODULE:= iwconfig
LOCAL_MODULE_TAGS :=optional

include $(BUILD_EXECUTABLE)

# iwevent
include $(CLEAR_VARS)

LOCAL_SRC_FILES := iwevent.c

LOCAL_CFLAGS += -Wno-parentheses-equality -Wno-tautological-compare -Wno-self-assign \
                -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \
                -Winline -MMD -fPIC

LOCAL_STATIC_LIBRARIES := libcutils libc libm libiw
LOCAL_FORCE_STATIC_EXECUTABLE := true

LOCAL_MODULE:= iwevent
LOCAL_MODULE_TAGS :=optional

include $(BUILD_EXECUTABLE)

# iwgetid
include $(CLEAR_VARS)

LOCAL_SRC_FILES := iwgetid.c

LOCAL_CFLAGS += -Wno-parentheses-equality -Wno-tautological-compare -Wno-self-assign \
                -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \
                -Winline -MMD -fPIC

LOCAL_STATIC_LIBRARIES := libcutils libc libm libiw
LOCAL_FORCE_STATIC_EXECUTABLE := true

LOCAL_MODULE:= iwgetid
LOCAL_MODULE_TAGS :=optional

include $(BUILD_EXECUTABLE)

# iwlist
include $(CLEAR_VARS)

LOCAL_SRC_FILES := iwlist.c

LOCAL_CFLAGS += -Wno-parentheses-equality -Wno-tautological-compare -Wno-self-assign \
                -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \
                -Winline -MMD -fPIC

LOCAL_STATIC_LIBRARIES := libcutils libc libm libiw
LOCAL_FORCE_STATIC_EXECUTABLE := true

LOCAL_MODULE:= iwlist
LOCAL_MODULE_TAGS :=optional

include $(BUILD_EXECUTABLE)

# iwpriv
include $(CLEAR_VARS)

LOCAL_SRC_FILES := iwpriv.c

LOCAL_CFLAGS += -Wno-parentheses-equality -Wno-tautological-compare -Wno-self-assign \
                -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \
                -Winline -MMD -fPIC

LOCAL_STATIC_LIBRARIES := libcutils libc libm libiw
LOCAL_FORCE_STATIC_EXECUTABLE := true

LOCAL_MODULE:= iwpriv
LOCAL_MODULE_TAGS :=optional

include $(BUILD_EXECUTABLE)


# iwspy
include $(CLEAR_VARS)
LOCAL_SRC_FILES := iwspy.c

LOCAL_CFLAGS += -Wno-parentheses-equality -Wno-tautological-compare -Wno-self-assign \
                -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual \
                -Winline -MMD -fPIC

LOCAL_STATIC_LIBRARIES := libcutils libc libm libiw
LOCAL_FORCE_STATIC_EXECUTABLE := true

LOCAL_MODULE:= iwspy
LOCAL_MODULE_TAGS :=optional

LOCAL_CFLAGS += -Wno-parentheses-equality -Wno-tautological-compare -Wno-self-assign

include $(BUILD_EXECUTABLE)

4、构建错误

4.1: “external/wireless_tools/iwlib.h:61:10: fatal error: ‘wireless.h’ file not found #include “wireless.h”

【解决方案】:

$mv wireless.22.h wireless.h

‘IW_EV_POINT_PK2_LEN’”

【解决方案】:
wireless.h文件最后增加以下两行:

#undef IW_EV_LCP_PK_LEN
#undef IW_EV_POINT_PK_LEN

unsigned int)’ [-Werror,-Wimplicit-function-declaration]”

【解决方案】:
修改iwlibh,增加以下定义:

#define bzero(buffer, size) memset(buffer, 0, size)

5、构建结果

构建生成的iwconfig/iwevent/iwgetid/iwlist/iwpriv/iwspy位于系统的system/bin目录下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值