编译和构建“IW”为Android 4.1设备? [英] compile and build “iw” for android 4.1 device?

查看:1029
本文介绍了编译和构建“IW”为Android 4.1设备?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在Android 4.1设备安装IW无线包。但我不知道是如何以及什么需要版本的软件包安装!

i need to install iw wireless packages on android 4.1 device. but i don't know how and what is the require version of the packages to install !!

也是它需要Linux平台上做到这一点还是有足够的构建和安装在亚行外壳为Android生根设备。

also is it need linux platform to do this or it is enough to build and install on adb shell for android rooting device.

我看到这个链接但是当我从亚行的终端做我看到混帐而不是发现了一些炮弹???怎么办呢?

i see this link but when i do it from adb terminal i see that git and some shells not found ??? how to do it ?

似乎没有人有任何想法?

it seems no one has any idea ??

推荐答案

在建设IW 3.11版本(其中有一个Android.mk文件的话),我遇到了由于丢失/错误的头文件和库的一些问题。因为它有一个Android.mk文件,NDK的都可以使用。

While building iw version 3.11 (which has an Android.mk file already), I encountered some issues due to missing/ wrong headers and libraries. Since it has an Android.mk file, the NDK can be used.

在下面我将承担以下内容:

In the following I will assume the following:

  • 系统设备映像已建成之前(内核头文件和libnl-2静态库至少应该有)。我已经建立的CyanogenMod 10(内核3.0.something)为I9300,更新下面的路径,以反映这一点。
  • NDK的安装到〜/安卓/系统/ NDK
  • NDK的安装适当的平台和工具链。

preparation解压后 IW-3.11.tar.xz 并改变它在我的目录:

Preparation after extracting iw-3.11.tar.xz and changing my directory in it:

ln -s . jni
ln -nsv ~/android/system/external ./

接下来的问题就是网络链路库:

The next issue is the netlink library:

In file included from external/libnl-headers/netlink/genl/genl.h:15:0,
                 from /tmp/and/iw/jni/iw.c:17:
external/libnl-headers/netlink/netlink.h:27:29: fatal error: linux/genetlink.h: No such file or directory.

简单地创建一个链接安卓/系统/缩小/目标/产品/ I9300 / OBJ / KERNEL_OBJ的/ usr /在include / linux 打破其他头不好,这将给错误,如:

Simply creating a link to the android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux breaks other headers badly which will give errors such as:

Compile thumb  : iw <= iw.c
In file included from /home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/net/if.h:28:0,
                 from /tmp/and/iw/jni/iw.c:10:
/tmp/and/iw/jni/linux/if.h:178:19: error: field 'ifru_addr' has incomplete type
/tmp/and/iw/jni/linux/if.h:179:19: error: field 'ifru_dstaddr' has incomplete type
/tmp/and/iw/jni/linux/if.h:180:19: error: field 'ifru_broadaddr' has incomplete type
/tmp/and/iw/jni/linux/if.h:181:19: error: field 'ifru_netmask' has incomplete type
/tmp/and/iw/jni/linux/if.h:182:20: error: field 'ifru_hwaddr' has incomplete type
In file included from external/libnl-headers/netlink/netlink.h:20:0,
                 from external/libnl-headers/netlink/genl/genl.h:15,
                 from /tmp/and/iw/jni/iw.c:17:
/home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/sys/socket.h:74:44: warning: 'struct msghdr' declared inside parameter list [enabled by default]
/home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/sys/socket.h:74:44: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
/home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/sys/socket.h:75:38: warning: 'struct msghdr' declared inside parameter list [enabled by default]
In file included from external/libnl-headers/netlink/netlink.h:25:0,
                 from external/libnl-headers/netlink/genl/genl.h:15,
                 from /tmp/and/iw/jni/iw.c:17:
/tmp/and/iw/jni/linux/netlink.h:33:2: error: unknown type name 'sa_family_t'
In file included from external/libnl-headers/netlink/genl/genl.h:15:0,
                 from /tmp/and/iw/jni/iw.c:17:
external/libnl-headers/netlink/netlink.h:51:16: warning: 'struct msghdr' declared inside parameter list [enabled by default]
external/libnl-headers/netlink/netlink.h:54:19: warning: 'struct iovec' declared inside parameter list [enabled by default]
make: *** [/tmp/and/iw/obj/local/armeabi/objs/iw/iw.o] Error 1

一个解决方法是创建的Linux 目录,把一个符号链接〜/安卓/系统/缩小/目标/产品/ I9300 / OBJ /KERNEL_OBJ/usr/include/linux/genetlink.h 在里面:

A workaround is to create the linux directory and put a symlink to ~/android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux/genetlink.h in it:

mkdir -p linux
ln -svn ~/android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux/genetlink.h linux/

最后补丁 Android.mk 来完成连接到网络链路库:

Finally patch Android.mk to finish linking to the netlink library:

sed "/LOCAL_LDFLAGS/s#\$# -L$HOME/android/system/out/target/product/i9300/obj/STATIC_LIBRARIES/libnl_2_intermediates -lnl_2#" -i Android.mk

现在的版本可以启动:

NDK_PROJECT_PATH=$PWD ~/android/system/ndk/ndk-build TARGET_PLATFORM=android-14

这将无法完成,因为网络链路/ GENL / genl.h不能被发现,但 IW 二进制可在库/ armeabi!

It will not complete because netlink/genl/genl.h cannot be found, but the iw binary is available in libs/armeabi!

这篇关于编译和构建“IW”为Android 4.1设备?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆