移植wireless tools (iwpriv, iwconfig, iwgetid, iwevents, iwspy, iwlist)到Android

http://blog.csdn.net/darkengine/article/details/7024459

最近在调试WIFI softap功能,发现netd源码中包含"iwpriv"相关的注释,这个工具应该会对WIFI调试非常有用,于是准备将其移植到Android上。


首先到这里下载源码,然后解压,按照网上搜出来的方法,把目录里头Makefile的CC,AR等改成交叉编译所用的,但是发现make all的时候报缺少头文件错误。用-I将头文件引入之后在ld阶段又报缺少crt0.o。折腾了半天之后依然无果,于是决定直接在目录下加个Android.mk用Android的make来编译。


一次尝试之后竟然成功了,泪流满面,以下是具体步骤:


1,在目录下cp -f wirless.29.h wirelss.h (自带的Makefile就是这么干的,根据版本选择头文件,我下载的是.29版本)


2,在目录下加入Android.mk,内容如下:

[plain]  view plain copy
  1. # Copyright (C) 2008 The Android Open Source Project  
  2. #  
  3. # Licensed under the Apache License, Version 2.0 (the "License");  
  4. # you may not use this file except in compliance with the License.  
  5. # You may obtain a copy of the License at  
  6. #  
  7. #      http://www.apache.org/licenses/LICENSE-2.0  
  8. #  
  9. # Unless required by applicable law or agreed to in writing, software  
  10. # distributed under the License is distributed on an "AS IS" BASIS,  
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
  12. # See the License for the specific language governing permissions and  
  13. # limitations under the License.  
  14.   
  15.   
  16. LOCAL_PATH := $(call my-dir)  
  17. ifneq ($(TARGET_SIMULATOR),true)  
  18.   
  19. include $(CLEAR_VARS)  
  20.   
  21. LOCAL_MODULE := libiw  
  22.   
  23. LOCAL_MODULE_TAGS := eng  
  24.   
  25. LOCAL_SRC_FILES := iwlib.c  
  26.   
  27. LOCAL_C_INCLUDE += LOCAL_PATH  
  28.   
  29. #LOCAL_SHARED_LIBRARIES := libiw  
  30. LOCAL_PRELINK_MODULE := false  
  31.   
  32. include $(BUILD_SHARED_LIBRARY)  
  33.   
  34. #================================================  
  35. include $(CLEAR_VARS)  
  36. LOCAL_MODULE_TAGS := eng  
  37. LOCAL_SRC_FILES := iwpriv.c  
  38.   
  39. LOCAL_SHARED_LIBRARIES := libiw  
  40. LOCAL_MODULE := iwpriv  
  41. include $(BUILD_EXECUTABLE)  
  42. #================================================  
  43.   
  44.   
  45. #================================================  
  46. include $(CLEAR_VARS)  
  47. LOCAL_MODULE_TAGS := eng  
  48. LOCAL_SRC_FILES := iwlist.c  
  49.   
  50. LOCAL_SHARED_LIBRARIES := libiw  
  51. LOCAL_MODULE := iwlist  
  52. include $(BUILD_EXECUTABLE)  
  53. #================================================  
  54.   
  55. #================================================  
  56. include $(CLEAR_VARS)  
  57. LOCAL_MODULE_TAGS := eng  
  58. LOCAL_SRC_FILES := iwconfig.c  
  59.   
  60. LOCAL_SHARED_LIBRARIES := libiw  
  61. LOCAL_MODULE := iwconfig  
  62. include $(BUILD_EXECUTABLE)  
  63. #================================================  
  64.   
  65. #================================================  
  66. include $(CLEAR_VARS)  
  67. LOCAL_MODULE_TAGS := eng  
  68. LOCAL_SRC_FILES := iwspy.c  
  69.   
  70. LOCAL_SHARED_LIBRARIES := libiw  
  71. LOCAL_MODULE := iwspy  
  72. include $(BUILD_EXECUTABLE)  
  73. #================================================  
  74.   
  75. #================================================  
  76. include $(CLEAR_VARS)  
  77. LOCAL_MODULE_TAGS := eng  
  78. LOCAL_SRC_FILES := iwgetid.c  
  79.   
  80. LOCAL_SHARED_LIBRARIES := libiw  
  81. LOCAL_MODULE := iwgetid  
  82. include $(BUILD_EXECUTABLE)  
  83. #================================================  
  84.   
  85. #================================================  
  86. include $(CLEAR_VARS)  
  87. LOCAL_MODULE_TAGS := eng  
  88. LOCAL_SRC_FILES := iwevent.c  
  89.   
  90. LOCAL_SHARED_LIBRARIES := libiw  
  91. LOCAL_MODULE := iwevent  
  92. include $(BUILD_EXECUTABLE)  
  93. #================================================  
  94.   
  95. endif # !TARGET_SIMULATOR  

3,在目录下mm,将生成的libiw.so用adb push到/system/lib,其他的iwxxx push到/system/bin。


PS: 有用自带的Makefile编译成功的同学请指点一下啊。

查看评论
2楼  wupenghuinice 2012-06-08 15:32发表 [回复] [引用] [举报]
你好,我想向你了解下怎么获得连接到softap上的用户列表?目前的话我只看到了netd跟dnsmasq交互,会把connected的列表写到dnsmasq.leases中,但是我得到的这个表不会自动更新,看下楼主有什么其他见解没
Re:  TechStone 2012-06-08 18:02发表 [回复] [引用] [举报]
这个比较难,其他设备连接进来的时候还好说,一旦连接成功就会更新dnsmasq.leases,但是别的设备断开连接的时候不会马上就反映出来,而是会有经过一个超时才会确认离开,然后把这个设备的信息清除更新列表回复wupenghuinice:
1楼  geraint0923y 2012-05-29 21:28发表 [回复]
我倒是能够直接用Makefile编译,能在android上运行,不知道楼主说的用Android.mk编译使用哪个命令?是ndk-build吗?
Re:  TechStone 2012-05-30 18:27发表 [回复]
没有改动过东西直接就能编译通过?我时把这些放到高通的源码上,然后用mm命令编译的,不是ndk-build。不过用ndk-build编译这个应该也可以回复geraint0923y:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值