簡體   English   中英

鏈接Android C代碼和ARM匯編程序

[英]Linking Android C-code and ARM Assembler

我寫了一個Android應用程序。 它使用主C代碼模塊和鏈接的C代碼模塊。 現在我想用ARM匯編程序模塊替換鏈接模塊。 有人有一個簡單的例子嗎?

這是一個Android.mk文件的例子,它將構建包含程序集的sourcetree。 要查看完整示例,請檢查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)

我寫了一個教程來做到這一點。 http://www.eggwall.com/2011/09/android-arm-assembly-calling-assembly.html

Android中的ARM程序集並不困難,但有許多不斷變化的部分:您需要一個匯編源代碼,一個C存根,一個Makefile,以及調用底層匯編代碼的Java存根“本機”方法。

您可以從上面的鏈接下載源代碼,看看它是如何工作的。 一旦你有一個工作的例子,它很容易戳,並使其適合你的需要。

我看過vikram的文章我有一個觀點,對於初學者來說,最好使用android源代碼在Android中構建和運行匯編程序代碼。

例如,您可以在Android.mk創建一個規范為“ BUILD_EXECUTABLE ”的模塊

您可以在C代碼中包含一個main函數,並使用main.c構建匯編代碼

您甚至可以在gingebread/frameworks/base/<mymodule>下添加這樣的模塊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM