Qt 5.9.0 build in 32-bit Linux fails



  • (reposted from the general forum, sorry!)

    Hi.

    I am attempting to compile 5.9.0 from source on Debian 8, 32-bit. After a few hours of compiling, everything grinds to a halt. Here is the log of error messages (as much as could be saved from my terminal line buffer). The errors seem pretty repetitive and seem to stem from forward declaration of QVector3D.

    My config:

    ./configure -prefix /opt/Qt5.9.0 -qt-xcb -no-opengl
    

    The tail end of my error output:

     
    ../../../include/QtCore/../../src/corelib/kernel/qmetatype.h:1882:1: note: in expansion of macro ‘QT_FOR_EACH_STATIC_GUI_CLASS’
     QT_FOR_EACH_STATIC_GUI_CLASS(QT_FORWARD_DECLARE_STATIC_TYPES_ITER)
     ^
    In file included from ../../../include/QtCore/qvector.h:1:0,
                     from ../../../include/QtGui/../../src/gui/painting/qpolygon.h:44,
                     from ../../../include/QtGui/qpolygon.h:1,
                     from ../../../include/QtGui/../../src/gui/painting/qmatrix.h:44,
                     from ../../../include/QtGui/qmatrix.h:1,
                     from ../../../include/QtGui/../../src/gui/painting/qtransform.h:43,
                     from ../../../include/QtGui/qtransform.h:1,
                     from ../../../include/QtGui/../../src/gui/image/qimage.h:48,
                     from ../../../include/QtGui/qimage.h:1,
                     from ../../../include/QtGui/../../src/gui/image/qpixmap.h:49,
                     from ../../../include/QtGui/qpixmap.h:1,
                     from ../../../include/QtGui/../../src/gui/image/qicon.h:46,
                     from ../../../include/QtGui/qicon.h:1,
                     from ../../../include/QtGui/../../src/gui/kernel/qwindow.h:55,
                     from ../../../include/QtGui/qwindow.h:1,
                     from ../../../include/QtGui/QWindow:1,
                     from hellowindow.h:51,
                     from hellowindow.cpp:51:
    ../../../include/QtCore/../../src/corelib/tools/qvector.h:591:37: error: invalid use of incomplete type ‘class QVector3D’
                     destruct(x->begin() + asize, x->end()); // from future end to current end
                                         ^
    In file included from ../../../include/QtCore/qmetatype.h:1:0,
                     from ../../../include/QtCore/../../src/corelib/kernel/qobject.h:54,
                     from ../../../include/QtCore/qobject.h:1,
                     from ../../../include/QtCore/QObject:1,
                     from ../../../include/QtGui/../../src/gui/kernel/qwindow.h:44,
                     from ../../../include/QtGui/qwindow.h:1,
                     from ../../../include/QtGui/QWindow:1,
                     from hellowindow.h:51,
                     from hellowindow.cpp:51:
    ../../../include/QtCore/../../src/corelib/kernel/qmetatype.h:152:22: error: forward declaration of ‘class QVector3D’
         F(QVector3D, 83, QVector3D) \
                          ^
    ../../../include/QtCore/../../src/corelib/kernel/qmetatype.h:1879:11: note: in definition of macro ‘QT_FORWARD_DECLARE_STATIC_TYPES_ITER’
         class Name;
               ^
    ../../../include/QtCore/../../src/corelib/kernel/qmetatype.h:1882:1: note: in expansion of macro ‘QT_FOR_EACH_STATIC_GUI_CLASS’
     QT_FOR_EACH_STATIC_GUI_CLASS(QT_FORWARD_DECLARE_STATIC_TYPES_ITER)
     ^
    In file included from ../../../include/QtCore/qvector.h:1:0,
                     from ../../../include/QtGui/../../src/gui/painting/qpolygon.h:44,
                     from ../../../include/QtGui/qpolygon.h:1,
                     from ../../../include/QtGui/../../src/gui/painting/qmatrix.h:44,
                     from ../../../include/QtGui/qmatrix.h:1,
                     from ../../../include/QtGui/../../src/gui/painting/qtransform.h:43,
                     from ../../../include/QtGui/qtransform.h:1,
                     from ../../../include/QtGui/../../src/gui/image/qimage.h:48,
                     from ../../../include/QtGui/qimage.h:1,
                     from ../../../include/QtGui/../../src/gui/image/qpixmap.h:49,
                     from ../../../include/QtGui/qpixmap.h:1,
                     from ../../../include/QtGui/../../src/gui/image/qicon.h:46,
                     from ../../../include/QtGui/qicon.h:1,
                     from ../../../include/QtGui/../../src/gui/kernel/qwindow.h:55,
                     from ../../../include/QtGui/qwindow.h:1,
                     from ../../../include/QtGui/QWindow:1,
                     from hellowindow.h:51,
                     from hellowindow.cpp:51:
    ../../../include/QtCore/../../src/corelib/tools/qvector.h:593:55: error: invalid use of incomplete type ‘class QVector3D’
                     defaultConstruct(x->end(), x->begin() + asize); // from current end to future end
                                                           ^
    In file included from ../../../include/QtCore/qmetatype.h:1:0,
                     from ../../../include/QtCore/../../src/corelib/kernel/qobject.h:54,
                     from ../../../include/QtCore/qobject.h:1,
                     from ../../../include/QtCore/QObject:1,
                     from ../../../include/QtGui/../../src/gui/kernel/qwindow.h:44,
                     from ../../../include/QtGui/qwindow.h:1,
                     from ../../../include/QtGui/QWindow:1,
                     from hellowindow.h:51,
                     from hellowindow.cpp:51:
    ../../../include/QtCore/../../src/corelib/kernel/qmetatype.h:152:22: error: forward declaration of ‘class QVector3D’
         F(QVector3D, 83, QVector3D) \
                          ^
    ../../../include/QtCore/../../src/corelib/kernel/qmetatype.h:1879:11: note: in definition of macro ‘QT_FORWARD_DECLARE_STATIC_TYPES_ITER’
         class Name;
               ^
    ../../../include/QtCore/../../src/corelib/kernel/qmetatype.h:1882:1: note: in expansion of macro ‘QT_FOR_EACH_STATIC_GUI_CLASS’
     QT_FOR_EACH_STATIC_GUI_CLASS(QT_FORWARD_DECLARE_STATIC_TYPES_ITER)
     ^
    In file included from ../../../include/QtCore/qarraydata.h:1:0,
                     from ../../../include/QtCore/../../src/corelib/tools/qbytearray.h:46,
                     from ../../../include/QtCore/qbytearray.h:1,
                     from ../../../include/QtCore/../../src/corelib/tools/qstring.h:49,
                     from ../../../include/QtCore/qstring.h:1,
                     from ../../../include/QtCore/../../src/corelib/kernel/qobject.h:47,
                     from ../../../include/QtCore/qobject.h:1,
                     from ../../../include/QtCore/QObject:1,
                     from ../../../include/QtGui/../../src/gui/kernel/qwindow.h:44,
                     from ../../../include/QtGui/qwindow.h:1,
                     from ../../../include/QtGui/QWindow:1,
                     from hellowindow.h:51,
                     from hellowindow.cpp:51:
    ../../../include/QtCore/../../src/corelib/tools/qarraydata.h: In instantiation of ‘static QTypedArrayData<T>* QTypedArrayData<T>::allocate(size_t, QArrayData::AllocationOptions) [with T = QVector3D; size_t = unsigned int; QArrayData::AllocationOptions = QFlags<QArrayData::AllocationOption>]’:
    ../../../include/QtCore/../../src/corelib/tools/qvector.h:544:51:   required from ‘void QVector<T>::reallocData(int, int, QArrayData::AllocationOptions) [with T = QVector3D; QArrayData::AllocationOptions = QFlags<QArrayData::AllocationOption>]’
    ../../../include/QtCore/../../src/corelib/tools/qvector.h:423:37:   required from ‘void QVector<T>::resize(int) [with T = QVector3D]’
    ../../../include/QtCore/../../src/corelib/tools/qvector.h:427:11:   required from ‘void QVector<T>::clear() [with T = QVector3D]’
    hellowindow.cpp:256:20:   required from here
    ../../../include/QtCore/../../src/corelib/tools/qarraydata.h:222:74: error: invalid application of ‘sizeof’ to incomplete type ‘QVector3D’
             return static_cast<QTypedArrayData *>(QArrayData::allocate(sizeof(T),
                                                                              ^
    ../../../include/QtCore/../../src/corelib/tools/qarraydata.h: In static member function ‘static QTypedArrayData<T>* QTypedArrayData<T>::allocate(size_t, QArrayData::AllocationOptions) [with T = QVector3D; size_t = unsigned int; QArrayData::AllocationOptions = QFlags<QArrayData::AllocationOption>]’:
    ../../../include/QtCore/../../src/corelib/tools/qarraydata.h:224:5: warning: control reaches end of non-void function [-Wreturn-type]
         }
         ^
    Makefile:1025: recipe for target '.obj/hellowindow.o' failed
    make[4]: *** [.obj/hellowindow.o] Error 1
    make[4]: Leaving directory '/home/tendim/dev/Qt5.9.0/qt-everywhere-opensource-src-5.9.0/qtbase/examples/opengl/hellowindow'
    Makefile:56: recipe for target 'sub-hellowindow-make_first' failed
    make[3]: *** [sub-hellowindow-make_first] Error 2
    make[3]: Leaving directory '/home/tendim/dev/Qt5.9.0/qt-everywhere-opensource-src-5.9.0/qtbase/examples/opengl'
    Makefile:357: recipe for target 'sub-opengl-make_first' failed
    make[2]: *** [sub-opengl-make_first] Error 2
    make[2]: Leaving directory '/home/tendim/dev/Qt5.9.0/qt-everywhere-opensource-src-5.9.0/qtbase/examples'
    Makefile:74: recipe for target 'sub-examples-make_first' failed
    make[1]: *** [sub-examples-make_first] Error 2
    make[1]: Leaving directory '/home/tendim/dev/Qt5.9.0/qt-everywhere-opensource-src-5.9.0/qtbase'
    Makefile:83: recipe for target 'module-qtbase-make_first' failed
    make: *** [module-qtbase-make_first] Error 2
    tendim@LuTze:~/dev/Qt5.9.0/qt-everywhere-opensource-src-5.9.0$ 
    
    
    

  • Lifetime Qt Champion

    Hi,

    What version of gcc are you using ?



  • @SGaist 4.9.2 (Debian 4.9.2-10) to be exact).


  • Lifetime Qt Champion

    Are you running a 32bit Debian or compiling on a multilib 64bit Debian ?



  • 32-bit.

    arch reports i686; uname -a reports "3.16.0-4-686-pae #1 SMP Debian 3.16.43-2 (2017-04-30) i686 GNU/Linux"


  • Lifetime Qt Champion

    I just realised something, while building Qt yourself you should add -nomake tests -nomake examples, that will avoid building them for no real benefit and in your case continue further.

    By the way, why disable OpenGL ?



  • Thanks @SGaist. I'd have to go back and look at my notes as to why I disabled OpenGL; it was something to do with a library not working during the configuration step. I will try recompiling without tests and examples to see how far I get.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.