android平台编译IW

不知道怎么编译IW,所以就搜索网络上的博客http://blog.csdn.net/jksl007/article/details/16862435

首先,iw依赖于libnl库,而目前android自身没有携带libnl库,所以要移植iw就要把libnl一起移植上去。好在Dominik Schurmann这哥们已经把一个移植好的libnl库挂在了github上,https://github.com/dschuermann/libnl-3-android,git clone下来。

在安装了android ndk的情况下,进入libnl-3-android/android_toolchain,直接运行ndk-build,就在libs目录底下生成了很多so文件了。

  1. git clone https://github.com/dschuermann/libnl-3-android
  2. cd libnl-3-android/android_toolchain
  3. ndk-build

有了这些so文件之后,那么接下来就真正考虑如何移植iw了。我采用的思路是,把iw包含到libnl中去,调整libnl项目中的Android.mk和Application.mk,使得生成libnl的同时,把iw一并给生成出来。

具体做法:

  1. cd libnl-3-android/lib
  2. git clone http://git.kernel.org/cgit/linux/kernel/git/jberg/iw.git
  3. mv iw/Android.mk iw/Android.mk.bak
  4. cd ../android_toolchain
  5. gvim jni/Android.mk
  6. gvim jni/Applcation.mk

在Android.mk的最后部分加上这一段:

  1. include $(CLEAR_VARS)
  2. LOCAL_MODULE := iw
  3. LOCAL_SRC_FILES :=  $(call list-all,$(LOCAL_PATH),iw/*.c)
  4. LOCAL_SHARED_LIBRARIES := nl-3 nl-genl-3
  5. include $(BUILD_EXECUTABLE)

对于里面的最后一句话,说明我们想要编译一个可执行文件,如果要编译动态链接库的话,就换成include $(BUILD_SHARED_LIBRARY)
    在Application.mk中修改一个变量

  1. APP_MODULES := nl-3 nl-genl-3 iw

然后对iw的源码做一个细节调整,主要是删除掉iw源码中对libnl不同版本的兼容性代码。

  1. cd ../lib/iw
  2. gvim iw.c
  3. gvim iw.h

在iw.c中注释掉与iw_version有关的所有内容,目前有两行。

  1. printf("\t--version\tshow version (%s)\n", iw_version);
  2. printf("iw version %s\n", iw_version);

在iw.c和iw.h中注掉以下内容:

  1. #if !defined(CONFIG_LIBNL20) && !defined(CONFIG_LIBNL30)
  2. ...
  3. #endif

这下就可以编译了:

  1. cd ../../android_toolchain
  2. ndk-build

进入到libs/<architecture>里面一看,iw,libnl-3.so,libnl-genl-3.so都在里面了,很开心。抓紧把它们拷到android机(已root,且支持nl80211)里面去运行一把。

  1. cd libs/armeabi
  1. adb push libnl-3.so /data/local/tmp
  1. adb push libnl-genl-3.so /data/local/tmp
  1. adb push iw /data/local/tmp
  1. adb shell
  2. su
  3. mount -o remount rw /system
  4. cp /data/local/tmp/libnl-3.so /system/lib
  5. cp /data/local/tmp/libnl-genl-3.so /system/lib
  6. cp /data/local/tmp/iw /system/bin
  7. chmod 777 /system/bin/iw
  8. iw dev wlan0 scan

一串熟悉的字眼又展现在了眼前。

开源那是很赞的,同样的修改好的代码也可以从https://github.com/imlinhao/android-iw-libnl3上下载。另外附赠一条命令ndk-build clean。

时间: 2024-08-07 22:37:14

android平台编译IW的相关文章

Cocos2d-x移植到Android平台编译的两个文件Android.mk和Application.mk

背景 首先,说说文章的背景.最近手中的一个项目,由于需求中要求提供Web界面的打印功能,当然如果没有打印机,还可以提供保存到本地.项目组长把这个"小任务"分给了我.本着努力为组长分忧解难的思想,领了任务之后,就马上开始了工作. 问题 刚开始的时候,组长给了一个工具(jatoolsprinter)让我研究,我用了一个多小时的时间,做出了一个简单的Demo,然后就是各种的测试,由于 web 打印需要浏览器安装 ActiveX 组件,在随后的测试中,我用了几款浏览器,甚至把安全级别都调到了最

Ogre3d Android平台编译教程

上一篇我们讲了Ogre3d 在 Window平台的编译流程方法 点击跳转 这一篇我们介绍 Ogre3d 编译到Android 平台的方法.可以和官方英文教程对照学习. 转载自博客 http://blog.csdn.net/huutu QQ:790621656 首先下载Ogre3d 依赖库源代码 和Ogre3d 源代码,下载方法在上一篇中介绍了,这里不再重复. 转载自博客 http://blog.csdn.net/huutu QQ:790621656 编译工具:NDK.Visual Studio.

Webrtc入门——基于阿里云ubuntu 最新webrtc Android平台编译详细说明

折腾了好多天,终于将webrtc Android平台的demo编译出来了,发现即使完全按照webrtc官网的编译指南,还是会碰到各种问题.而网上又没有更全面的说明,最后是通过查看webrtc 批处理脚本才最终一步步解决问题.写下这篇文章,希望对大家有帮助. 在编译的过程中,感觉webrtc编译实在是太难了, 但是完成了编译之后,感觉webrtc编译其实是很简单的,造成这个强烈反差的主要原因是,google工程师将几乎所有编译过程中需要使用的软件.依赖配置.环境变量,都已经写成了脚本,你只要运行就

如何为Android平台编译 opencv3 和 opencv_contrib (Linux)

p { margin-bottom: 0.1in; direction: ltr; color: rgb(0, 0, 10); line-height: 120%; text-align: left } p.western { font-family: "Liberation Serif", serif; font-size: 12pt } p.cjk { font-family: "Source Han Sans CN Regular"; font-size: 1

在cocos2d-x-3.0 android 平台编译时提示CocosGUI.h: No such file or directory

分类是个让人蛋疼的事情,所幸自己的博客自己做主.这是个高兴的开始. 每天抽空玩2048,终于忍受不住,于是决定自己从网上download下源码,自己编译一个出来.所有的事情都很容易,除了操蛋的中文注释,在Unicode(UTF-8无签名)-代码页 65001的编码格式下,会产生很操蛋的错误提示. 当vs2012提示的错误让人摸不着头脑如坠毒海祸水时,首先应该怀疑编码格式,以及是否有中文注释. 然后,给vs添加了CocoStudio所应引用的三个库: HelloCocos\cocos2d\coco

Win7+VS2010+cocos2d-x 2.1 Beta3+Sqlite工程向android平台移植

Win7+VS2010+cocos2d-x 2.1 Beta3+Sqlite工程向android平台移植 题外话: 有时打开博客想写点什么时,心中感到有点酸楚,尽管语言不那么精简,或者说是准确,而且很可能文中的总结极不成熟,甚至还夹带些错误:但是,它们毕竟是自 己经过"痛苦"的挣扎后取得的一点成绩,于是,还是下决心记下来,一方面充实了自己尘封的笔记,另一方面也不敢独享-因为我看到有那么多的朋友把自己的心 血也无保留地奉献出来.或许,我的这一点一滴也能成为他们决战BUGS中的LITTLE

boost全平台编译方法

0.通用规则 boost自带一套编译工具bjam,bjam本身是跨平台的,并且也要自行编译出来.在boost目录下有bootstrap.sh和bootstrap.bat两个脚本分别用来编译*nix和windows下的bjam.bootstrap脚本可以传入参数,以在编译bjam过程中生成特定的编译boost的配置.编译bjam过程中生成的project-config.jam就是默认的配置,但还可以在运行bjam的时候再传入参数来覆盖.同时生成的b2是bjam的代理,运行哪个的效果差不多. 在终端

直播技术总结(二)ijkplayer的编译到Android平台并测试解码库

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/55670380 前言:ijkplayer,是b站工程师开源的播放器框架,基于FFmpeg及MediaCodec,内部实现软解及硬解的功能,对于没有自研底层播放器的公司,用它确实是比较合适了.关于介绍可以直接看:https://github.com/Bilibili/ijkplayer,今天主要是对ijkplayer进行编译在Andr

FFmpeg的Android平台移植—编译篇

摘要:本文主要介绍将FFmpeg音视频编解码库移植到Android平台上的编译和基本测试过程. 环境准备: ubuntu-12.04.5 android-ndk64-r10-linux-x86_64.tar.tar ffmpeg-2.7.2_tmp.tar.bz2 adt-bundle-windows-x86_64-20131030.zip 第一步:源代码下载 到FFmpeg官方网站http://www.ffmpeg.org/上去下载源代码,这里下载的源代码是最权威的.进入官网之后,选择”Dow