android-ndk 构建无法链接 boost 系统

标签 android c++ boost android-ndk

我正在尝试构建 sphinxbase 库,但它一直出现以下错误:

C:/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: ./obj/local/armeabi/objs/base/__/__/__/__/__/src/libsphinxbase/util/SingletonLogMath.o: in function boost::thread_exception::thread_exception(int, char const*):C:\sdk/include/boost/thread/exceptions.hpp:51: error: undefined reference to 'boost::system::system_category()'
C:/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: ./obj/local/armeabi/objs/base/__/__/__/__/__/src/libsphinxbase/util/SingletonLogMath.o: in function _GLOBAL__sub_I_SingletonLogMath.cpp:C:\sdk/include/boost/system/error_code.hpp:222: error: undefined reference to 'boost::system::generic_category()'
C:/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: ./obj/local/armeabi/objs/base/__/__/__/__/__/src/libsphinxbase/util/SingletonLogMath.o: in function _GLOBAL__sub_I_SingletonLogMath.cpp:C:\sdk/include/boost/system/error_code.hpp:223: error: undefined reference to 'boost::system::generic_category()'
C:/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: ./obj/local/armeabi/objs/base/__/__/__/__/__/src/libsphinxbase/util/SingletonLogMath.o: in function _GLOBAL__sub_I_SingletonLogMath.cpp:C:\sdk/include/boost/system/error_code.hpp:224: error: undefined reference to 'boost::system::system_category()'
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi/libbase.so] Error 1

我在互联网上进行了搜索,我所能找到的只是我应该添加 boost-system 库,他们还说以正确的顺序使用 include 依赖项很重要。 但我不知道正确的顺序是什么。

这是 android.mk 文件中可能很重要的部分。

include $(CLEAR_VARS)
LOCAL_MODULE := boost_thread
LOCAL_SRC_FILES := lib/libboost_thread_pthread-gcc-mt-1_54.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := boost_system
LOCAL_SRC_FILES := lib/libboost_system-gcc-mt-1_54.a
include $(PREBUILT_STATIC_LIBRARY)

LOCAL_PATH := $(MY_LOCAL_PATH)

include $(CLEAR_VARS)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../../src/libsphinxbase/fe $(LOCAL_PATH)/../../../../../src/libsphinxbase/fe $(LOCAL_PATH)/../../../../../include/android $(LOCAL_PATH)/../../../../../include $(SDK)/include
LOCAL_CFLAGS += -DHAVE_CONFIG_H
LOCAL_CPPFLAGS += -fexceptions -frtti
LOCAL_ARM_MODE := arm

...sources...

LOCAL_STATIC_LIBRARIES := boost_system, boost_thread

正确的顺序应该是什么?

最佳答案

LOCAL_STATIC_LIBRARIES := boost_system, boost_thread

你应该去掉','

LOCAL_STATIC_LIBRARIES := boost_system boost_thread

关于android-ndk 构建无法链接 boost 系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18697755/

相关文章:

android - 如何将文件夹中的选定文件从 Android 设备同步到 Google 云端硬盘,反之亦然

android - 如何从 fragment 中更改菜单项图标?

c++ - Spirit V2 和 X3 的状态

python - 按边缘属性进行深度优先搜索

android - 与听众打交道

c++ - std::unique_ptr 是基础对象的两倍大

c++ - 在不同的对象函数中调用对象函数

c++ - 如何将数据从资源指针存储到 C++ 中的静态内存缓冲区?

c++ - 如何使用 Boost.Geometry 检查一个环是否包含在另一个环中?

android - Gradle 构建失败,找不到 keystore.properties