2013-06-20 2 views
1

Я пытаюсь включить простую общую библиотеку C++ в самостоятельную сборку Android. Он был скомпилирован с g ++ без каких-либо ошибок и предупреждений.Включите совместно используемую библиотеку C++ в самодельный Android. Ошибка при запуске ndk-build

На данный момент мне нужно включить эту .so-библиотеку в самостоятельный андроид.

Я скопировал мой источник в '$ (Android Source)/НДК/источник/Android/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 

Существуют пути НКА и SDK-инструменты соответственно.

Когда я запускать НДК-сборки я получаю следующую вещь:

[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/НДК/компилированные инструменты/рычажного линукс-androideabi-4.4.3/
я не сделал найденный предварительно созданный каталог. Там в том числе только два файла: Config.mk и setup.mk

Однако в то время как я запускать NDK-строить из severally downloaded НДК-R8e я получаю совсем другой вывод:

$ 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 из Google решила ваш про я проблема. Вы должны использовать версию, которую они упаковывают, а не версию из своего исходного репозитория. – krsteeve

ответ

1

не включают в себя файлы заголовков в LOCAL_SRC_FILES, это только для исходных файлов

LOCAL_SRC_FILES: = md5.h md5.cc

должен быть

LOCAL_SRC_FILES: = md5.cc

вы добавляете ссылку на файл заголовка (оператор импорта) в фактическом исходном файле

+0

Да. Вы правы. Однако это не критическая ошибка. – Andrew