Android NDK: Incluye la biblioteca de boost c ++

Estoy intentando utilizar una biblioteca del alza dentro de mi uso del androide, usando el NDK. He encontrado un par de historias de éxito aquí y aquí , pero no puedo decir lo mismo de mí. Estoy específicamente tratando de usar la biblioteca en este enlace , así como la biblioteca de hilos de impulso. En el código de abajo, sólo estoy tratando de incluir la biblioteca de subprocesos, no la biblioteca de matemáticas. El proceso que usé para construir las bibliotecas de impulso es prácticamente el mismo que el primer enlace que adjunto.

Hasta ahora, parece que he construido con éxito las bibliotecas de impulso, pero cuando ejecuto ndk-build , obtengo el siguiente error:

 Prebuilt : libboost_thread.a <= <NDK>/sources/ cp: omitting directory `path/to/ndk/sources/boost' make: *** [obj/local/armeabi/libboost_thread.a] Error 1 

Obviamente el cp: omitting directory... no es exactamente un error. Pero lo único que estoy recibiendo, aparte de eso, es la siguiente línea, que en realidad no significa nada. Error 1

Aquí está mi archivo Android.mk:

 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_STATIC_LIBRARIES := boost_thread LOCAL_LDLIBS := lboost_system-gcc-md lboost_thread-gcc-md -lgnustl_static LOCAL_LDLIBS += lboost_system-gcc-md lboost_thread-gcc-md \ -L$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi \ -lgnustl_static LOCAL_SRC_FILES := #cpp_sources LOCAL_MODULE := com_example_ndkFile_CppMethods include $(BUILD_SHARED_LIBRARY) $(call import-module,boost) 

Y también hay un archivo Android.mk en path/to/ndk/sources/boost/ :

 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE:= boost_thread LOCAL_SRC_FILES:= android/lib/libboost_thread.a LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) include $(PREBUILT_STATIC_LIBRARY) 

Y mi humilde archivo Application.mk:

 APP_ABI := armeabi armeabi-v7a APP_STL := gnustl_static APP_CPPFLAGS = -fexceptions 

Construí las bibliotecas de impulso utilizando bjam . Todos los libboost_###.a están en la carpeta sources/boost/android/lib .

¿Cuál es el error que estoy recibiendo?

Construí las bibliotecas de impulso con Boost-for-Android . Entonces tengo en mi directorio boost / include / lib el androide makefile boost.mk

 LOCAL_PATH := $(call my-dir) # boost_date_time # include $(CLEAR_VARS) LOCAL_MODULE := boost_date_time LOCAL_SRC_FILES := libboost_date_time-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) # boost_filesystem # include $(CLEAR_VARS) LOCAL_MODULE := boost_filesystem LOCAL_SRC_FILES := libboost_filesystem-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) # boost_thread # include $(CLEAR_VARS) LOCAL_MODULE := boost_thread LOCAL_SRC_FILES := libboost_thread-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) # boost_system # include $(CLEAR_VARS) LOCAL_MODULE := boost_system LOCAL_SRC_FILES := libboost_system-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) # boost_program_options # include $(CLEAR_VARS) LOCAL_MODULE := boost_program_options LOCAL_SRC_FILES := libboost_program_options-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) # boost_chrono # include $(CLEAR_VARS) LOCAL_MODULE := boost_chrono LOCAL_SRC_FILES := libboost_chrono-gcc-mt-1_53.a include $(PREBUILT_STATIC_LIBRARY) 

Y mi módulo donde yo uso algunas de las bibliotecas de impulso se ve así

 LOCAL_PATH := $(call my-dir) # SignalServer, executable # include $(CLEAR_VARS) LOCAL_CFLAGS := -DTIXML_USE_TICPP #LOCAL_CFLAGS += -DDEBUG LOCAL_STATIC_LIBRARIES := boost_thread \ boost_system \ boost_filesystem \ boost_program_options \ boost_chrono \ LOCAL_STATIC_LIBRARIES += ticpp \ tia \ tobicore \ tobiid \ tid \ gdf LOCAL_MODULE := signalserver LOCAL_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_C_INCLUDES += $(LOCAL_PATH)/extern/include LOCAL_C_INCLUDES += $(LOCAL_PATH)/../boost/include/boost-1_53 LOCAL_SRC_FILES := #cpp source include $(BUILD_EXECUTABLE) 

Además tengo un Android.mk donde todos los subdir makefiles están listados

 TOP_PATH := $(call my-dir) include $(TOP_PATH)/boost/lib/boost.mk include $(TOP_PATH)/signalserver/signalserver.mk . . 

Y mi Application.mk:

 APP_PLATFORM := android-14 APP_ABI := armeabi-v7a #APP_OPTIM := debug #NDK_DEBUG := 1 NDK_TOOLCHAIN_VERSION := 4.6 APP_STL := gnustl_static APP_CPPFLAGS := -fexceptions -frtti 

Aquí: http://silverglint.com/boost-for-android/ puede encontrar una forma sencilla e indolora de construir una versión moderna (eg 1.64.0) de boost para android. Funciona con clang y gcc.

También se incluye una aplicación de ejemplo que muestra cómo usar los binarios de optimización así construidos.

  • Android ANTLR hacer que no funciona correctamente
  • Construir objeto compartido de C ++ al crear un proyecto de Android en Eclipse
  • ¿Qué son export_includes e import_includes files when building Android
  • La construcción de AOSP, vendor_module_check.mk falla
  • Cómo calcular la cobertura de la prueba con Robolectric
  • Uso de la función 'comodín' de Make en Android.mk
  • Cómo incorporar el archivo de hacer existente con Android NDK
  • Condiciones de Android.mk
  • Macro de preprocesador en Android.mk se ignora, pero funciona en Application.mk
  • Construcción de proyecto android produce error 2
  • Error en la generación yasm / source / patched-yasm / util.h: 78: 23: error: libintl.h: Ningún archivo o directorio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.