1. 程式人生 > >NDK編譯Android上執行的C可執行程式

NDK編譯Android上執行的C可執行程式

大部分講到NDK編譯的都是針對編譯動態靜態庫的,有些特殊的需求需要編譯成可執行檔案,所以在此記錄一下

本文基於win7

首先NDK的目錄需要加到系統路徑中去,這樣ndk-build才能正常呼叫,ndk-build本身是一個指令碼,依賴於jni資料夾,所以你的程式必須放在jni目錄下,然後必須得一個Android.mk的檔案

  1. LOCAL_PATH := $(call my-dir)  
  2. include $(CLEAR_VARS)  
  3. LOCAL_MODULE := helloworld  
  4. LOCAL_SRC_FILES := helloworld.c  
  5. 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