Android cc1plus:错误:-Werror=文字后缀:无选项-Wliteral后缀

Android cc1plus:错误:-Werror=文字后缀:无选项-Wliteral后缀,android,c++,qt,qt5,Android,C++,Qt,Qt5,我在尝试为Android编译Qt5(在linux x86_64上)时遇到此错误: 有人见过它或知道如何解决它吗 编译器版本为“arm-linux-AndroidABI-g++(GCC)4.7” 发生错误时make正在运行的整个编译命令: /home/triumph/Documents/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ -c

我在尝试为Android编译Qt5(在linux x86_64上)时遇到此错误:

有人见过它或知道如何解决它吗

编译器版本为“arm-linux-AndroidABI-g++(GCC)4.7”

发生错误时make正在运行的整个编译命令:

/home/triumph/Documents/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ -c -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,--noexecstack -std=gnu++0x -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -Wno-error=strict-overflow -Wno-error=literal-suffix -g -g -gdwarf-2 -marm -O0 -fno-omit-frame-pointer -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wno-psabi -W -D_REENTRANT -fPIC -DQT_NO_PRINTER -DQT_NO_PRINTDIALOG -DQT_NO_LIBUDEV -DQT_NO_XCB -DQT_NO_XKBCOMMON -DQT_NO_USING_NAMESPACE -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DPCRE_HAVE_CONFIG_H -DQT_CORE_LIB -I../../mkspecs/android-g++ -I. -I../../include -I../../include/QtCore -I../../include/QtCore/5.2.0 -I../../include/QtCore/5.2.0/QtCore -Iglobal -I../3rdparty/pcre -I../3rdparty/harfbuzz/src -I../3rdparty/md5 -I../3rdparty/md4 -I../3rdparty/sha3 -I.moc/debug-shared -I/home/triumph/Documents/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/include -I/home/triumph/Documents/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I/home/triumph/Documents/android-ndk-r8e/platforms/android-9/arch-arm/usr/include -o .obj/debug-shared/qabstractanimation.o animation/qabstractanimation.cpp

我也犯了同样的错误。我通过从Makefile(./qt5/qtbase/src/corelib/)中的CXXFLAGS行中删除“-Wno error=literal后缀”来解决这个问题

我还向corelib/global/qlogging.cpp中的switch语句添加了一些default:entries,这些语句处理msgType(案例qtfatalsg:etc),因为编译器抱怨没有处理QtTraceMsg。我将默认情况视为“警告”(将其视为致命错误可能更安全)


p、 我使用当前git(5.2alpha)和Laszlo的“官方建筑说明”建议的定制ndk-r8e版本,遇到了这个错误。我在使用谷歌最新的ndk-r9和qt-git标签v5.1.1时没有遇到这个错误(我不知道是不同的ndk还是不同的git版本造成了差异)。

我在使用5.2.0-alpha1标签和定制的android-ndk-r8e时遇到了同样的问题

通过切换到v5.1.1进行修复:

从以前的构建尝试中清除。使用

git clean -f
在qt5目录中,以及任何脏的子模块目录中。之后,从qt5目录:

git checkout v5.1.1
git submodule update --recursive

使用QT./configure命令(和任何参数)重新配置,然后生成。

问题在于对QT_common.qrf进行了修复

以下代码行添加在GCC4.6到4.8的代码块中,但它引用了添加到GCC4.7的编译器指令,因此在与GCC4.6一起使用时会生成失败的生成文件

            android: QMAKE_CXXFLAGS += -Wno-error=literal-suffix
解决方案是修改文件并在该行添加一个条件:

        contains(ver, "4\\.[78]") { // Doesn't apply to 4.6
            android: QMAKE_CXXFLAGS += -Wno-error=literal-suffix
    }

你遵守了官方的建筑指示吗?
        contains(ver, "4\\.[78]") { // Doesn't apply to 4.6
            android: QMAKE_CXXFLAGS += -Wno-error=literal-suffix
    }