繁体   English   中英

NDK r10b和c ++ 11功能

[英]NDK r10b and c++11 features

在阅读了很多有关Make和NDK的文章之后,我仍然无法获得c ++ 11支持。

在我的Application.mk文件中:

NDK_TOOLCHAIN_VERSION := clang
APP_CPPFLAGS += -std=c++11
APP_STL := gnustl_static
APP_BUILD_SCRIPT := Android.mk 

然后在我的Android.mk文件中:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Core

# =======================================================================
#                       Includes Directories
# =======================================================================
LOCAL_C_INCLUDES := ${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.8/include
LOCAL_C_INCLUDES += ${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/Include

# Boost:
LOCAL_C_INCLUDES += $(BOOST_PATH)

# Python:
LOCAL_C_INCLUDES += $(PYTHON_PATH)

# Core Includes: 
LOCAL_C_INCLUDES += $(LOCAL_PATH)/Core

LOCAL_SRC_FILES :=  /Sources/FluxV3/Sources/DotFlux/Core/Application/AppBase.cpp

include $(BUILD_STATIC_LIBRARY)

然后在ndk-build日志中,我收到此消息:

在/Sources/Android/SDK/android-ndk-r10b/sources/cxx-stl/gnu-libstdc++/4.8/include/initializer_list:36:0中包含的文件中,来自/ Sources / Boost-for-Android-master / boost_1_53_0 /boost/smart_ptr/make_shared_array.hpp:18,来自/Sources/Boost-for-Android-master/boost_1_53_0/boost/smart_ptr/make_shared.hpp:18,来自/ Sources / Boost-for-Android-master / boost_1_53_0 / boost /make_shared.hpp:15,来自/Sources/FluxV3/Sources/DotFlux/Core/OSMin.hpp:114,来自/Sources/FluxV3/Sources/DotFlux/CoreDef.hpp:34,来自/ Sources / FluxV3 / Sources / DotFlux /CoreMin.hpp:26,来自/Sources/FluxV3/Sources/DotFlux/CoreBase.hpp:26,来自/Sources/FluxV3/Sources/DotFlux/Core.hpp:26,来自/ Sources / FluxV3 / Sources / DotFlux / Core /PCH/pch.hpp:24,来自/Sources/FluxV3/Sources/DotFlux/Core/Application/AppBase.cpp:21:/ Sources / Android / SDK / android-ndk-r10b / sources / cxx-stl / gnu- libstdc ++ / 4.8 / include / bits / c ++ 0x_warning.h:32:2:错误:#error此文件需要ISO C ++ 2011标准的编译器和库支持。 该支持目前处于试验阶段,必须使用-std = c ++ 11或-std = gnu ++ 11编译器选项启用。

另一件事是我没有将Android预处理程序添加到我的代码中。

你能帮忙的话,我会很高兴。 谢谢。

编辑:

/Sources/Android/SDK/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++ -MMD -MP -MF ./obj/local/ armeabi / objs / Core // Sources / FluxV3 / Sources / DotFlux / Core / Application / AppBase.od -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march = armv5te -mtune = xscale -msoft-float -fno-exceptions -fno-rtti -mthumb -Os -g -DNDEBUG -fomit-frame-pointer -fno-strict-aliasing -finline-limit = 64 -I / Sources / FluxV3 / Sources / DotFlux / Core -I / Sources / FluxV3 / Sources / DotFlux / Core / PCH -I / Sources / Boost-for-Android-master / boost_1_53_0 -I / Sources / Android / SDK / android-ndk-r10b / sources / cxx-stl / gnu -libstdc ++ / 4.8 / include -I / Sources / Android / SDK / android-ndk-r10b / sources / cxx-stl / gnu-libstdc ++ / 4.8 / libs / armeabi / Include -I / Sources / Android / SDK / android-ndk -r10b / sources / cxx-stl / system / include -I / Sources / FluxV3 / Sources / DotFlux -DANDROID -Wa,-noexecstack -Wformat -Werror = format-security -std = c ++ 11 -pthread -I /来源/安卓/ SDK / Android的NDK,经R 10b / platform / android-3 / arch-arm / usr / include -c /Sources/FluxV3/Sources/DotFlux/Core/Application/AppBase.cpp -o ./obj/local/armeabi/objs/Core//Sources/FluxV3/来源/ DotFlux /核心/应用/ AppBase.o

我们看到已设置std = c ++ 11和-pthread。

我从user1906回答:

“检查您的Application.mk文件。即使已将clang设置为工具链,但使用的编译器仍是GCC 4.6(来自上一次的Edit)。尝试将工具链设置为4.8,看看它是否有任何改变。”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM