Android Crystax NDK链接器错误

Android Crystax NDK链接器错误,android,c++,boost,android-ndk,linker,Android,C++,Boost,Android Ndk,Linker,我正在努力工作,出现了以下错误(当然,我已经编好了路径/to/MY/CRYSTAXNDK/): 通过将NDK\u TOOLCHAIN\u VERSION=4.9添加到Android.mk中 我还将$(调用导入模块,boost/1.57.0)替换为$(调用导入模块,boost/1.59.0),以调用boost库的实际版本。 因此,我的Android.mk如下所示: # Android.mk LOCAL_PATH := $(call my-dir) NDK_TOOLCHAIN_VERSION =

我正在努力工作,出现了以下错误(当然,我已经编好了路径/to/MY/CRYSTAXNDK/):

通过将
NDK\u TOOLCHAIN\u VERSION=4.9
添加到
Android.mk

我还将
$(调用导入模块,boost/1.57.0)
替换为
$(调用导入模块,boost/1.59.0)
,以调用boost库的实际版本。

因此,我的Android.mk如下所示:

# Android.mk
LOCAL_PATH := $(call my-dir)
NDK_TOOLCHAIN_VERSION = 4.9

include $(CLEAR_VARS)
LOCAL_MODULE           := test-boost
LOCAL_SRC_FILES        := test.cpp gps.cpp
LOCAL_STATIC_LIBRARIES := boost_serialization_static
include $(BUILD_EXECUTABLE)

$(call import-module,boost/1.59.0)
我的crystax ndk目录位于系统路径中。我知道问题的原因是NDK链接器无法找到合适的Boost库。但我不知道如何配置它,使它能够根据目标体系结构自动选择库
请帮我弄清楚链接器的配置
谢谢。

这是我的。简而言之,libboost_serialization.so是使用GNU libstdc++v5构建的,但是当您调用
ndk build
时,它将最终二进制文件链接到GNU libstdc++v4.9,这是与GNU libstdc++v5不兼容的二进制文件(特别是std::basic_字符串;如果有兴趣,请查看详细信息)


这已由修复,并将包含在下一个bug修复版本(10.3.2)中。同时,您可以在crystax-ndk-10.3.1文件树上手动应用该修补程序来解决该问题。

在crystax博客教程之后,我遇到了相同的问题。我通过添加以下内容来修复它

# Application.mk
APP_ABI := all
NDK_TOOLCHAIN_VERSION := 5
APP_PLATFORM := android-19

第二行修复了ndk build Boost gcc lib路径错误。第三行修复了调用可执行文件时“仅定位独立可执行文件”的问题。

感谢您的修复!我还不完全了解整个NDK是如何工作的,但应用此修复程序后是否应该重建boost库?如果是的话,你能给我指一下文件吗,或者说我该怎么做?因为错误仍然是一样的。不,你不应该为此重建Boost库。CHILTAX NDK已经包括预构建的增强库,它是针对所有C++标准库实现的,即两个GNU LIbSTDC + +版本和两个LLVM LBC+++版本。该错误来自于在构建升压库时使用的C++ STDLIB的错配,并用于构建应用程序。那个修正案也一样。但是,如果在您的情况下,这不起作用,那么可能还有别的原因导致C++ STDLIB不匹配。我不能说具体是什么,但如果您能提供再现问题的最小示例,我很乐意提供帮助。您可以在crystax-ndk-10.3.1上手动应用该修补程序是什么意思?我现在正在经历这个错误,这是令人不安的。我不得不从补丁a7c363377复制代码,但仍然得到相同的错误!
# Android.mk
LOCAL_PATH := $(call my-dir)
NDK_TOOLCHAIN_VERSION = 4.9

include $(CLEAR_VARS)
LOCAL_MODULE           := test-boost
LOCAL_SRC_FILES        := test.cpp gps.cpp
LOCAL_STATIC_LIBRARIES := boost_serialization_static
include $(BUILD_EXECUTABLE)

$(call import-module,boost/1.59.0)
# Application.mk
APP_ABI := all
NDK_TOOLCHAIN_VERSION := 5
APP_PLATFORM := android-19