NDK編譯Android上執行的C可執行程式
阿新 • • 發佈:2018-12-31
大部分講到NDK編譯的都是針對編譯動態靜態庫的,有些特殊的需求需要編譯成可執行檔案,所以在此記錄一下
本文基於win7
首先NDK的目錄需要加到系統路徑中去,這樣ndk-build才能正常呼叫,ndk-build本身是一個指令碼,依賴於jni資料夾,所以你的程式必須放在jni目錄下,然後必須得一個Android.mk的檔案
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE := helloworld
- LOCAL_SRC_FILES := helloworld.c
-
include $(BUILD_EXECUTABLE)
這樣編譯出來的程式就是armeabi的可執行程式了,預設的都使用armeabi,如果想編譯基於其他平臺,可以在本來建立一個Application.mk檔案指明目標平臺
exp:
APP_ABI := x86
貌似如果修改好application.mk也可以做到不基於jni目錄,以後研究下.
ndk-build就會生成基於x86的bin檔案了
ndk-build 基本使用:
ndk-build clean :清除專案
ndk-build V=1 :編譯的時候顯示詳細資訊
當然也可以不使用ndk-build來編譯,而直接使用ndk中的交叉編譯器的,這個就需要設定SYSROOT了,就是執行的android的api級別了
exp(win7 64bit):
d:\Android\android-ndk-r9c\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gcc --sysroot=d:\Android\android-ndk-r9c\platforms\android-12\arch-arm -o hw helloword.c