Android NDK: включение библиотеки boost c ++

Я пытаюсь использовать библиотеку boost внутри моего приложения Android, используя NDK. Я нашел пару историй успеха здесь и здесь , но я не могу сказать то же самое обо мне. Я специально пытаюсь использовать библиотеку в этой ссылке , а также библиотеку ускорения потоков. В приведенном ниже коде я просто пытаюсь включить библиотеку потоков, а не в библиотеку математики. Процесс, который я использовал для создания библиотек boost, почти такой же, как и первая ссылка.

Пока, кажется, я успешно создал библиотеки boost, но когда я запускаю ndk-build , я получаю следующую ошибку:

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

Очевидно, cp: omitting directory... не является точно ошибкой. Но единственное, что я получаю, кроме следующей – это следующая строка, которая на самом деле ничего не значит. Error 1

Вот мой файл 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) 

И есть файл Android.mk в 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) 

И мой скромный файл Application.mk:

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

Я создал библиотеки boost с помощью bjam . Все libboost_###.a Находятся в папке sources/boost/android/lib .

Какая ошибка я получаю?

Solutions Collecting From Web of "Android NDK: включение библиотеки boost c ++"

Я создал библиотеки boost, используя Boost-for-Android . Тогда у меня есть в моем файле boost / include / lib файл 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) 

И мой модуль, где я использую некоторые библиотеки boost, выглядит так

 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) 

Кроме того, у меня есть Android.mk, где перечислены все подфайлы subdir

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

И мой 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 

Здесь: http://silverglint.com/boost-for-android/ вы можете найти простой и безболезненный новый способ создания современной (например, 1.64.0) версии boost для android. Работает с clang и gcc.

Также включено примерное приложение, в котором показано, как использовать встроенные бинарные файлы.