0

我目前在 Linux 中用 C 语言编译了一组源代码,输出是一个 *.o 文件,它是一个目标文件。据说这会进行图像压缩。现在我想在 Android 中使用/测试它。

这可能吗?我只尝试了 Android NDK 开发人员方面的 NDK 示例。没有遇到任何关于如何做到这一点的参考资料。

提前致谢,佩马尔

4

3 回答 3

0

您不运行目标代码文件 (*.o)。您需要将其转换为可执行文件。为此,假设您使用的是 GCC,您将运行gcc file1.o file2.o -o executable它将具有 file1.o 和 file2.o 的两个文件程序转换为名为可执行文件的可执行文件。

于 2012-04-23T10:19:41.357 回答
0

目标文件(以 .o 结尾)通常包含不完整的代码。例如,如果您的程序使用某个库在屏幕上打印某些内容以生成可执行文件,则必须将编译后的代码(.o 文件)与该库链接,以便在操作系统加载可执行文件时知道所有代码将会被使用。您可以使用链接器(例如 Linux 中的 ld 或 Android 中的 /system/bin/linker)来执行此链接。正如 Jalfor 所指出的,在您的情况下,让 gcc 为您调用链接器会更容易。

于 2012-04-23T10:29:01.903 回答
0

答案是肯定的。但是你必须做一些相当多的工作才能看到它在 Android 上运行。

1) 如果您在 Linux 上编译,则意味着正在为 x86 或 AMD 处理器构建目标文件或最终可执行文件(大多数情况下)。但大多数移动设备都在手机上运行 ARM 处理器。所以,虽然你有一个可执行文件,但如果它不是为 ARM Cpu 构建的,你将无法在 Android 中执行它。这正是 android NDK 所做的。

2)因此,我们必须再次为Android(ARM)构建相同的代码,为此我们需要一个交叉编译器和您正在谈论的目标文件的源代码。

3)如果你有可用的源代码,你可以再做两件事。

  • 要将其包含在 JNI 文件夹中,请构建共享库,然后执行调用等操作。
  • 使用 android NDK 将代码构建为可执行文件(请注意,您需要在代码中包含 main),然后使用 adb 在 Android 中推送可执行文件。

现在终于可以登录然后检查结果了。如果有任何不清楚的地方,请告诉我。我不介意解释。谢谢..

于 2012-04-24T06:42:36.830 回答