[英]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.