У меня проблема с созданием собственной библиотеки для Android, которая использует библиотеку Boost C ++.Команда link, сгенерированная ndk-build, определяет библиотеки повышения после stdc ++, что приводит к нескольким неопределенным ссылкам на элементы STL.Я могу избавиться от ошибок ссылок (и сгенерировать рабочую библиотеку), отредактировав команду link и переместив библиотеки boost, чтобы они были указаны до stdc ++.
Как я могу заставить ndk-build поставить библиотеки boostперед stdc ++ в команде link?(Или есть другое решение для этого?)
Для справки, мой файл Android.mk вставлен ниже.
Спасибо, Шломи
=============== Файл Android.mk =====================
LOCAL_PATH := $(call my-dir)
DEBUG_SERVER := $(HOME)/upontek_Host_Gen_Dev/Host_Infra/NtrigNetPlatform/DebugServer
include $(CLEAR_VARS)
LOCAL_MODULE := ntrig_generic_api
LOCAL_CFLAGS := -DANDROID_NDK -O3 -Wall -c -fmessage-length=0 -Wno-write-strings
ifeq ($(TARGET_ARCH_ABI),x86)
# x86 causes link error if compiling with -fstack-protector
LOCAL_CFLAGS += -fno-stack-protector
else
LOCAL_CFLAGS := -DANDROID_NDK -DBOOST_THREAD_LINUX -DBOOST_HAS_PTHREADS -D_GLIBCXX__PTHREADS -fexceptions
endif
LOCAL_C_INCLUDES += \
./inc \
../../Common/inc \
$(NDK_PATH)/sources/cxx-stl/gnu-libstdc++/include \
$(NDK_PATH)/sources/cxx-stl/gnu-libstdc++/libs/$(TARGET_ARCH_ABI)/include \
$(BOOST_DIR)/boost_1_45_0 \
$(DEBUG_SERVER)/Common/inc \
$(DEBUG_SERVER)/ClientLib/inc
LOCAL_SRC_FILES := \
../src/GenericApi.c ../src/DebugClient.cpp
LOCAL_LDLIBS := \
-L$(BOOST_DIR)/build/lib -lboost_regex-mt -lboost_date_time-mt -lboost_system-mt \
-lboost_thread-mt
include $(BUILD_STATIC_LIBRARY)