2013-10-03 43 views
0

我得到這個錯誤,而試圖編譯的Qt 5的Android(在Linux x86_64的):cc1plus:錯誤:-Werror =字面後綴:沒有選項-Wliteral後綴

cc1plus: error: -Werror=literal-suffix: no option -Wliteral-suffix 

有人見過它還是知道如何解決它?

編譯器版本是 「胳膊-Linux的androideabi-G ++(GCC)4.7」

整個編譯命令,使錯誤發生時正在運行:

/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 
+0

你是否按照官方建築指示? – lpapp

回答

0

我得到了同樣的錯誤。我通過刪除Makefile中的CXXFLAGS行(./qt5/qtbase/src/corelib/)中的「-Wno-error = literal-suffix」來解決此問題。

我還在處理msgType(case QtFatalMsg:etc)的corelib/global/qlogging.cpp中的switch語句中添加了一些默認條目,因爲編譯器抱怨說QtTraceMsg沒有被處理。我將默認情況視爲「警告」(將其視爲致命錯誤可能更安全)。

p.s.我使用當前的git(5.2alpha)與Laszlo的「官方建築指令」建議的自定義ndk-r8e版本發生了錯誤。我沒有得到這個錯誤使用谷歌最新的ndk-r9與qt git標籤v5.1.1(我不知道這是不同的ndk或不同的git修訂版,使差異)。

0

我在使用5.2.0-alpha1標籤和自定義android-ndk-r8e時遇到了同樣的問題。

修正通過切換到V5.1.1:

清理從以前的版本的嘗試。在您的qt5目錄中使用

git clean -f 

以及任何髒的子模塊目錄。之後,從您的qt5目錄:

git checkout v5.1.1 
git submodule update --recursive 

重新配置您的QT ./configure命令(和任何參數),然後make。

2

問題是對qt_common.qrf所做的修復。

被一個代碼塊中加入下面的行爲GCC 4.6至4.8,但它引用了一個編譯器指令添加到GCC 4.7,並因此與GCC 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 
    }