【问题标题】:Linking Android C-code and ARM Assembler链接 Android C 代码和 ARM 汇编程序
【发布时间】:2011-07-20 10:00:04
【问题描述】:

我编写了一个 Android 应用程序。它使用一个主要的 C 代码模块和一个链接的 C 代码模块。现在我想用 ARM 汇编模块替换链接模块。谁有一个简单的例子?

【问题讨论】:

  • 您是在问如何使用 NDK 编译 ARM 程序集源代码?
  • 是的。我需要一个包含 C 代码模块和 ARM 汇编模块的示例。我需要编译它们并将它们链接在一起。

标签: android assembly arm android-ndk


【解决方案1】:

这是一个 Android.mk 文件示例,它将构建包含程序集的源树。要查看完整示例,请查看 NDK 包中分发的 hello-neon 示例。

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_ARM_MODE := arm  # remove this if you want thumb mode
LOCAL_ARM_NEON := true # remove this if you want armv5 mode

LOCAL_CFLAGS :=  -std=c99 -pedantic -v

LOCAL_SRC_FILES := # list your C, C++ and assembly sources here.
           # assembly source files ends with extension .S
           # add .arm after the extension if you want to compile in armv5 mode (default is thumb)
           # add .arm.neon to compile in armv7 mode

LOCAL_C_INCLUDES := $(LOCAL_PATH)

LOCAL_LDLIBS := -llog

LOCAL_MODULE := #the name of your shared library

include $(BUILD_SHARED_LIBRARY)

【讨论】:

  • 您好,ognian,感谢您回复我。我认为现在情​​况已经得到控制。否则,我会大喊大叫。最好的,罗杰
【解决方案2】:

我写了一个教程来做到这一点。 http://www.eggwall.com/2011/09/android-arm-assembly-calling-assembly.html

Android 中的 ARM 汇编并不难,但有很多可动部分:您需要一个汇编源代码、一个 C 存根、一个 Makefile 和 Java 存根“本机”方法来调用底层汇编代码。

您可以从上面的链接下载源代码,看看它是如何工作的。一旦你有了一个工作示例,就很容易戳穿它并使其适合你的需要。

【讨论】:

    【解决方案3】:

    我看到vikram的文章我有一个意见,对于初学者来说,最好使用android源代码在Android中构建和运行汇编代码。

    例如您可以在Android.mk 中创建具有“BUILD_EXECUTABLE”规范的模块

    您可以在 C 代码中拥有一个 main 函数,并让汇编代码与 main.c 一起构建

    gingebread/frameworks/base/<mymodule>下也可以添加这样的模块

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多