这些默认情况下没有安装在 Android 4.2.1 上,所以是否可以交叉编译例如GNU grep
的源代码或者find
让它在 Android 上运行?(最好不必root设备或在PLAY之外安装一些应用程序,例如busybox。)是否有任何缺失的依赖项会阻止这种情况?我正在 Ubuntu 10.0.04 上开发
问问题
2004 次
2 回答
0
这不是一个完整的答案,因为我没有尝试构建grep
或find
. 然而,一般来说,为 Android 构建 GNU 实用程序是完全可能的。为此,最好的选择是:
- 下载安卓原生开发包
- 参考NDK构建 Android独立工具链
docs/STANDALONE-TOOLCHAIN.html
- 只需使用正常
./configure && make
机制构建相关的 GNU 实用程序。
然后,您需要将生成的二进制文件复制到您的 Android 设备上,您可以使用adb push
. 您可能需要安排将它们放入/data/
某个地方,因为它们/mnt/sdcard
通常被标记为不可执行。
缺少依赖项
在实际构建过程中您会发现的主要问题是 Android 不使用标准 GNU libc
(glibc)。相反,它使用自己的,称为仿生。这确实错过了某些重要的 API - 例如,宽字符串支持。
我发现对于一些 GNU 实用程序来说这是可以的,并且可以通过最少的源代码更改来编译它们。
但是,如果遇到麻烦,最好使用这些实用程序的其他版本,这些实用程序通常设计用于在底层 libc 方面具有更大的灵活性。具体来说,之前关于使用的建议busybox
非常好。如果您不想从 Android 市场安装它,可以在此处找到源代码。
于 2013-02-06T14:44:02.320 回答
0
奇怪的。我有他们/system/xbin/*
。可能更幸运的是busybox。busybox find
busybox grep
不确定是否在 Android 4.2 上默认安装了busybox,但它是一个非常常见的二进制文件。
于 2013-02-05T10:42:18.730 回答