2013-06-20 97 views
1

我試圖在自建的android發行版中包含簡單的C++共享庫。它已經用g ++編譯,沒有任何錯誤和警告。在自建的android中包含C++共享庫。啓動時出錯ndk-build

現在我需要將這個.so庫包含到自建的android中。

我複製我的源到 '$(Android的源)/ NDK /源/安卓/ libmd5/JNI' 和創建Android.mk與一個內容文件:

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_CFLAGS := 

LOCAL_MODULE  := libmd5 
LOCAL_LDLIBS  := -L$(SYSROOT)/usr/lib 
LOCAL_SRC_FILES := md5.h md5.cc 

include $(BUILD_SHARED_LIBRARY) 

然後我添加下一行在〜/ .bashrc結尾

export PATH=$PATH:$HOME/AndroidSources/ndk:$HOME/bin/android-sdk-linux/tools 

分別有NDK和SDK工具的路徑。

當我推出NDK建造讓我接下來的事情:

[email protected]:~/AndroidSources/ndk/sources/android/libmd5$ ndk-build 
Android NDK: WARNING: Unsupported source file extensions in jni/Android.mk for module md5  
Android NDK: md5.h md5.cc  
make: /home/andrey/AndroidSources/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found 
make: /home/andrey/AndroidSources/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found 
SharedLibrary : libmd5.so 
make: /home/andrey/AndroidSources/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-g++: Command not found 
make: *** [obj/local/armeabi/libmd5.so] Error 127 

當我跟着〜/ AndroidSources/NDK /工具鏈/ ARM-Linux的androideabi-4.4.3/
我沒有找到預建的目錄。還有包括剛纔兩個文件:config.mk和setup.mk

但是從severally downloaded NDK-R8E而我發起NDK-建立我得到一個非常不同的輸出:

$ ndk-build 
Android NDK: WARNING: Unsupported source file extensions in jni/Android.mk for module md5  
Android NDK: md5.h 
Compile++ thumb : md5 <= md5.cc 
StaticLibrary : libstdc++.a 
SharedLibrary : libmd5.so 
Install  : libmd5.so => libs/armeabi/libmd5.so 

警告是理解 - .h文件不得在.mk文件中。不過,我在libs/armeabi /(如上所述)中獲得了最新的庫。

我做了所有與Ubuntu 12.10並嘗試使用ndk從android source

我做錯了什麼?如何在自建的Android中獲得包含共享庫?我希望我已經提供了足夠詳細的信息。如果不是,請詢問。

+0

它看起來像從谷歌下載ndk包解決你的專業blem。您應該使用它們打包的版本,而不是來自其源存儲庫的版本。 – krsteeve

回答

1

你不包括在LOCAL_SRC_FILES頭文件,它只是對源文件

LOCAL_SRC_FILES:= md5.h md5.cc

應該

LOCAL_SRC_FILES:= md5.cc

你在實際的源文件中添加一個到頭文件(import語句)的鏈接

+0

是的。你說得對。但它並不是嚴重錯誤。 – Andrew