c程式碼利用ndk-build來生成elf可執行檔案
阿新 • • 發佈:2020-12-18
原文章地址:https://www.ssfiction.com/andiordadb/9931.html--猴子技術宅
當然這個是我們在實踐中,在cmd視窗中能看到檔案生成流程,讓我們知道ndk-build生成elf可執行檔案原理:對於後期在破解中更能得到啟發;
寫一個簡單的冒泡演算法:(結尾:.c結尾)maopao.c
#include "stdio.h" #include "assert.h" void maopao(int *arr, int sz){ int i =0; int j =0; assert(arr); //判斷異常 for(i=0; i<sz-1; i++){ for(j=0; j<sz-i-1; j++){ if(arr[j] > arr[j+1]){ int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } } int main(){ int i =0; int arr[] ={111,3,3,4,5,6,7}; int as = sizeof(arr)/sizeof(arr[0]); maopao(arr,as); printf("從小到大:"); for (i=0; i<as; i++){ printf(" %d",arr[i]); } printf("\n"); getchar(); }
Android.mk檔案
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE := maopao
LOCAL_SRC_FILES := maopao.c
include $(BUILD_EXECUTABLE)
LOCAL_CFLAGS += -pie -fPIE
LOCAL_LDFLAGS += -pie -fPIE
如果是生成.so檔案
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := maopao #模組名稱 LOCAL_SRC_FILES := maopao.c #原始檔 .c或者.cpp LOCAL_ARM_MODE := arm #編譯後的指令集 ARM指令 LOCAL_LDLIBS += -llog #依賴庫 include $(BUILD_SHARED_LIBRARY) #指定編譯檔案的型別
Application.mk檔案
APP_ABI := x86 armeabi-v7a
注意:將三個檔案放入jni檔案裡面,檔名jni一定要相同;