2011-09-13 143 views
1

我在c/C++中有一個庫。我已經在一些C++程序中成功地使用了它。Android編譯庫NDK

我想測試,如果它編譯於Android,這將是什麼規模等
有什麼辦法,我編譯這個庫到.so文件,而無需一個完整的Android的Java項目?我對Android開發一無所知,但有一位朋友想要使用我的庫。我可以給他提供一個編譯好的.so文件嗎?
我發現的每一個資源都需要編譯出Android項目中的JNI文件夾。

回答

3

我發現要使用build-ndk腳本,我不需要一個真正的項目。我創建了一個文件夾project,除了另一個文件夾jni以外沒有任何內容,並將所有資源都放在該文件夾中。然後,我創建了Android.mk文件並按照ndk文檔中所述運行腳本。

+2

「項目」目錄沒有什麼特別之處 - 將其命名爲任何你想要的。源代碼和'Android.mk'應該放在'$(project)/ jni /'中,並且在構建過程中會創建一些目錄:'$(project)/ obj'和'$(project)/ libs'。 – jrr

2

你需要做的是安卓Native Development Kit(NDK)http://developer.android.com/sdk/ndk/index.html和GCC編譯器。

然後,您可以創建一個Makefile,其參數如下所示(謝謝ViTo Brothers Apoyan)並創建您的共享庫。

GCC := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-gcc.exe 
GPP := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-g++.exe 
AR := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-ar.exe 

OPTIONS :=\ 
-fpic \ 
-ffunction-sections \ 
-funwind-tables \ 
-fstack-protector \ 
-D__ARM_ARCH_5__ \ 
-D__ARM_ARCH_5T__ \ 
-D__ARM_ARCH_5E__ \ 
-D__ARM_ARCH_5TE__ \ 
-Wno-psabi \ 
-march=armv5te \ 
-mtune=xscale \ 
-msoft-float \ 
-mthumb \ 
-Os \ 
-fomit-frame-pointer \ 
-fno-strict-aliasing \ 
-finline-limit=64 \ 
-DANDROID \ 
-Wa, \ 
-O2 \ 
-DNDEBUG \ 
-g \ 

default: all 


all: obj 
    $(AR) r mysharedlibrary.so *.o 

obj: 
    $(GCC) $(OPTIONS) -c *.c 
+0

謝謝,但我最終解決了這個更簡單的方法。 – baruch