为 android 4.1 设备编译和构建“iw”?

2024-01-14

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

是否需要 Linux 平台来执行此操作,或者在 adb shell 上构建并安装 Android 生根设备就足够了。

我看到这个 link http://www.onlyxool.net/porting-iw-tools-to-android/但是当我从 adb 终端执行此操作时,我看到 git 和一些 shell 未找到???怎么做 ?

似乎没有人有任何想法?


在构建 iw 版本 3.11(已经有 Android.mk 文件)时,我遇到了一些由于缺少/错误的标头和库而导致的问题。由于它有一个Android.mk文件,因此可以使用NDK。

接下来我将假设以下内容:

  • 之前已经构建了设备映像(内核头文件和 libnl-2 静态库至少应该可用)。我已经为 i9300 构建了 CyanogenMod 10(带有内核 3.0.something),更新下面的路径以反映这一点。
  • NDK 安装到~/android/system/ndk.
  • NDK 安装了适当的平台和工具链。

提取后的准备工作iw-3.11.tar.xz并更改其中的目录:

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

下一个问题是 netlink 库:

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.

只需创建一个链接到android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux严重破坏其他标头,这将导致错误,例如:

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目录并放置一个符号链接~/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完成与 netlink 库的链接:

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

它不会完成,因为找不到 netlink/genl/genl.h,但是iw二进制文件可在 libs/armeabi 中找到!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 android 4.1 设备编译和构建“iw”? 的相关文章

随机推荐

  • git fetch origin 不获取所有分支

    我读到的答案这个问题 https stackoverflow com questions 10312521 how to fetch all git branches that git fetch origin应该获取all起源的分支 但就
  • Azure WebApp 未加载我的字体

    我在 Azure 上的 WebApp 遇到了一些问题 我的自定义字体在我的本地主机上正确呈现 但是当我将项目部署到 Azure 并访问网站时 Web 浏览器通知我找不到我的字体 错误 404 但是当我从 Azure 门户访问 FTP 服务器
  • 使用 Python unittest 缓存 setUp() 的结果

    我目前有一个unittest TestCase 看起来像 class test appletrailer unittest TestCase def setup self self all trailers Trailers res 720
  • RandomForestRegressor 和 feature_importances_ 错误

    我正在努力从我的 RandomForestRegressor 中提取特征重要性 我得到 属性错误 GridSearchCV 对象没有属性 功能重要性 有谁知道为什么没有属性吗 根据文档应该存在这个属性 完整代码 from sklearn e
  • 如何释放堆栈上的变量?

    有没有办法释放在堆栈上创建的变量和 或对象 我特意谈论的是堆栈而不是堆 我不想争论这是否有用或良好的做法 我只需要知道它是否可能 我知道当它超出范围时它会自动释放 我想在它超出范围之前取消分配它 我正在使用 C int a a deallo
  • 在 Protractor 中测试模板?

    编写适用于站点中每个页面的断言的最佳方法是什么 我正在测试网站的页脚中是否存在某个元素 因此该元素应该存在于所有页面上 我正在考虑编写一个单独的文件来测试网站的模板元素 然后将其包含在所有规范中 不过似乎没有其他人这样做 首先 为了编写更干
  • Zend Framework:未定义的类常量'MYSQL_ATTR_INIT_COMMAND'

    您可能已经知道 我从之前的问题中从 ubuntu 切换到了 windows 我之前在 ubuntu 上开发 Zend Framework 现在在 Windows 上开发同一个项目 由于这种切换 我在 Windows 中遇到了一些在 ubun
  • EntityTypeConfiguration如何获取关键属性?

    我正在使用 C EF 5 和 MVC4 我正在使用 EntityTypeConfiguration 设置主键和后端表 public class AuditZoneMap EntityTypeConfiguration
  • 为什么 ifstream 文件中的换行符(当通过此代码读取时)占用 2 个字节?

    我使用的文件有 15 行 每行 2 个字符 因此假设文件的大小约为 44 字节 但使用tellg 函数 大小显示为 58 此外 我累积了一个包含所有位置的数组代码正在识别一个换行符 它们都是连续的 因此证实了这个疑问 谢谢你 Tailfil
  • 我不明白为什么我得到 QPainter::begin: Widget Painting can only begin as a result of apaintEvent

    我一直在查看有关此错误的其他 StackOverflow 问题 以及网络上的其他地方 但我不明白这些答案与我的代码有何关系 因此 我希望有一个对我有意义的固定示例 或者更好地解释事件如何以及何时发生 下面的代码旨在计算出其运行的屏幕尺寸 调
  • 为什么这么多网站不允许在密码中使用非字母数字字符?

    在注册时 很多网站不允许在密码中使用符号 从可用性的角度来看 这让我陷入了困境 因为我在所有密码中都包含了多个符号 并且作为一名时不时处理网络身份验证的程序员 我不明白为什么不允许这样做 我错过了什么吗 他们担心 SQL 注入吗 不想处理转
  • 克隆 git 存储库时如何自动保留别名?

    我在 git 存储库的配置文件中设置了一堆方便的别名 我偶尔会克隆这个存储库 例如到我的笔记本电脑上 但克隆不包含我设置的任何别名 大概是因为克隆不会复制存储别名的 git 配置文件 但是 我希望在使用克隆时可以使用这些别名 而无需再次手动
  • 如何下载发送到 Telegram 机器人的文件或照片?

    我正在使用电报机器人 API 但无论如何我都看不到下载发送到我的机器人的文件 我得到了文件的哈希值 但不知道如何处理它 有什么办法吗 谢谢 现在可以使用了 https core telegram org bots api getfile h
  • 警告:将新 ns 映射到旧 ns 并且模拟器突然停止

    升级到 Arctic Fox 后 即使模拟器正在运行但有时会突然停止 我也会收到以下错误 这是什么错误 我怎样才能摆脱这个 我正在使用以下内容复制自cmd gt C Users Debasis gt flutter doctor Docto
  • 如何从xhr下载流媒体视频

    I d like to download a video from a site that uses flowplayer When I inspect the element I get something like So we can
  • Javascript OOP 最佳实践? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • TypeError:调用元类基时出错新样式类不能只有经典基

    类的集合定义为 class A staticmethod def call print a class C type def repr self return somename class B A metaclass C staticmet
  • 基于匹配多个数据集中的多个条件和日期范围添加列

    我一直在努力寻找解决这个问题的最佳方法 为了概括这个问题并帮助其他可能需要执行类似任务的人 我试图找到将列添加到第三个数据集的最佳方法 该方法基于中间数据集中的匹配 并且属于第三数据集的日期范围 最终结果是将第三个数据集中的匹配值返回到第一
  • SSRS 2008 R2 - 从报表服务器链接以纵向而不是横向打印

    我的一份 SSRS 报告有一个问题 如果我直接从服务器打印 它会以纵向打印 从而切断报告的左侧 基本上 它似乎会打印右侧 并尽可能打印到左侧页面内 报告的其余部分并不像打印在单独的页面上那样 如果我导出为 PDF 并打印它工作正常 它似乎只
  • 为 android 4.1 设备编译和构建“iw”?

    我需要在 android 4 1 设备上安装 iw 无线软件包 但我不知道如何安装以及安装所需的软件包版本是什么 是否需要 Linux 平台来执行此操作 或者在 adb shell 上构建并安装 Android 生根设备就足够了 我看到这个