Important: Please read the Qt Code of Conduct -

Cannot build: Qt 4.8.1, Linux, error in qdrawhelper_sse2.cpp

  • Hi All,
    Perhaps someone can see the obvious problem with my attempt to build Qt 4.8.1 (or 4.8.0) on Linux using GCC.

    $ make confclean
    $ ./configure --prefix=/mnt/data/qt/qt-4.8.1 -plugin-sql-sqlite -opensource
    --- 8< -- snip --
    Qt is now configured for building. Just run 'gmake'.
    Once everything is built, you must run 'gmake install'.
    Qt will be installed into /mnt/data/qt/qt-4.8.1

    To reconfigure, run 'gmake confclean' and 'configure'.
    $ make
    --- 8< -- snip --
    g++ -c -Winline -msse2 -m64 -pipe -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -pthread -DQT_SHARED -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/qt4 -I/usr/include/qt4/QtGui -I/usr/include/libdrm -I/usr/include/qt4/QtCore -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -I/usr/include/freetype2 -fPIC -DQT_SHARED -DQT_BUILD_GUI_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_NO_OPENTYPE -DQT_NO_STYLE_MAC -DQT_NO_STYLE_WINDOWSVISTA -DQT_NO_STYLE_WINDOWSXP -DQT_NO_STYLE_WINDOWSCE -DQT_NO_STYLE_WINDOWSMOBILE -DQT_NO_STYLE_S60 -DQ_INTERNAL_QAPP_SRC -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++-64 -I. -I../../include/QtCore -I../../include -I../../include/QtGui -I.rcc/release-shared -I../3rdparty/xorg -Iimage -I/usr/include/freetype2 -I../3rdparty/harfbuzz/src -Idialogs -I.moc/release-shared -I/usr/X11R6/include -I.uic/release-shared painting/qdrawhelper_sse2.cpp -o .obj/release-shared/qdrawhelper_sse2.o
    painting/qdrawhelper_sse2.cpp:535:76: error: ‘Operator’ does not name a type
    painting/qdrawhelper_sse2.cpp:535:86: error: ISO C++ forbids declaration of ‘op’ with no type
    painting/qdrawhelper_sse2.cpp: In function ‘const uint* qt_fetch_radial_gradient_sse2(uint*, const int*, const QSpanData*, int, int, int)’:
    painting/qdrawhelper_sse2.cpp:538:12: error: ‘qt_fetch_radial_gradient_template’ was not declared in this scope
    painting/qdrawhelper_sse2.cpp:538:46: error: ‘QRadialFetchSimd’ was not declared in this scope
    painting/qdrawhelper_sse2.cpp:538:72: error: expected primary-expression before ‘>’ token
    painting/qdrawhelper_sse2.cpp:538:74: error: expected primary-expression before ‘>’ token
    painting/qdrawhelper_sse2.cpp:538:84: warning: left-hand operand of comma has no effect
    painting/qdrawhelper_sse2.cpp:538:88: warning: right-hand operand of comma has no effect
    painting/qdrawhelper_sse2.cpp:538:94: warning: right-hand operand of comma has no effect
    painting/qdrawhelper_sse2.cpp:538:97: warning: right-hand operand of comma has no effect
    painting/qdrawhelper_sse2.cpp:538:100: warning: right-hand operand of comma has no effect
    painting/qdrawhelper_sse2.cpp:539:1: warning: control reaches end of non-void function
    make[1]: *** [.obj/release-shared/qdrawhelper_sse2.o] Error 1
    make[1]: Leaving directory `/mnt/data/qt/qt-everywhere-opensource-src-4.8.1/src/gui'
    make: *** [sub-gui-make_default-ordered] Error 2
    Using this compiler
    $ gcc -v
    Using built-in specs.
    Target: x86_64-pc-linux-gnu
    Configured with: /var/tmp/portage/sys-devel/gcc-4.5.3-r2/work/gcc-4.5.3/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.3 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.3/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.3/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --disable-fixed-point --without-ppl --without-cloog --disable-lto --enable-nls --without-included-gettext --with-system-zlib --disable-werror --enable-secureplt --enable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.5.3/python --enable-checking=release --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-targets=all --with-bugurl= --with-pkgversion='Gentoo 4.5.3-r2 p1.1, pie-0.4.7'
    Thread model: posix
    gcc version 4.5.3 (Gentoo 4.5.3-r2 p1.1, pie-0.4.7)
    on a Core i7-2600

  • You could try hacking it by using the configure option -no-sse2

    Hard to say what's going wrong, you've got a type 'Operator' that has not been defined, as to why, that may be a little tricky finding why.

  • Im out of topic, but yeah, another gentoo user here XD

  • Using -no-sse2 gets the process to a different failure point that seems related to ssse3. Adding -no-ssse3 gets me to more errors implying there might be some undesirable crossover with the system-wide Qt install (4.7.4).

    I also found with an almost identical symptom caused by some private headers being installed system wide. Gentoo does this:
    private-headers : Install Qt declarative private headers required by Qt-creator
    QmlDesigner and QmlInspector plugins

    painting/qdrawhelper_sse2.cpp does this:
    include <private/qdrawhelper_x86_p.h>

    so it could be picking up the unrelated

    from the existing 4.7.4 install.

    I'll keep chipping away at this and also look at how this is avoided in the Gentoo supplied builds for Qt.

Log in to reply