2

这些默认情况下没有安装在 Android 4.2.1 上,所以是否可以交叉编译例如GNU grep的源代码或者find让它在 Android 上运行?(最好不必root设备或在PLAY之外安装一些应用程序,例如busybox。)是否有任何缺失的依赖项会阻止这种情况?我正在 Ubuntu 10.0.04 上开发

4

2 回答 2

0

这不是一个完整的答案,因为我没有尝试构建grepfind. 然而,一般来说,为 Android 构建 GNU 实用程序是完全可能的。为此,最好的选择是:

  1. 下载安卓原生开发包
  2. 参考NDK构建 Android独立工具链docs/STANDALONE-TOOLCHAIN.html
  3. 只需使用正常./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 回答