Qt 5.9.1 static build Linux



  • Hi!
    I'm trying to build static version of Qt 5.9.1 under Linux (amd64, Debian Stable, kernel 4.9.30, GCC 6.3.0) with the following configure:

    ./configure -static -release -opensource -confirm-licence -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -prefix /home/tikani/Qt5.9.1/5.9.1/static
    

    As make -j4 starts, after a certain amount of time, build fails with the following error:

    make[3]: Leaving directory '/home/tikani/Qt5.9.1/5.9.1/Src/qtbase/src/gui'
    make[2]: Leaving directory '/home/tikani/Qt5.9.1/5.9.1/Src/qtbase/src'
    Makefile:48: recipe for target 'sub-src-make_first' failed
    make[1]: *** [sub-src-make_first] Error 2
    make[1]: Leaving directory '/home/tikani/Qt5.9.1/5.9.1/Src/qtbase'
    Makefile:82: recipe for target 'module-qtbase-make_first' failed
    make: *** [module-qtbase-make_first] Error 2
    

    What am I doing wrong?
    Thanks in advance.


  • Lifetime Qt Champion

    Hi,

    These line here are just the result, it doesn't say exactly what failed. Please run make again but without an -j option.

    Then post the exact error you get.



  • @SGaist

    ssl/qsslcertificate_openssl.cpp: In function 'uint qHash(const QSslCertificate&, uint)':
    ssl/qsslcertificate_openssl.cpp:69:30: error: invalid use of incomplete type 'X509 {aka struct x509_st}'
             return qHashBits(x509->sha1_hash, SHA_DIGEST_LENGTH, seed);
                                  ^~
    In file included from /usr/include/openssl/crypto.h:31:0,
                     from /usr/include/openssl/comp.h:16,
                     from /usr/include/openssl/ssl.h:47,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:60,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/qsslcontext_openssl_p.h:1,
                     from ssl/qsslsocket_p.h:62,
                     from ssl/qsslsocket_openssl_p.h:70,
                     from ssl/qsslsocket_openssl_symbols_p.h:71,
                     from ssl/qsslcertificate_openssl.cpp:41:
    /usr/include/openssl/ossl_typ.h:119:16: note: forward declaration of 'X509 {aka struct x509_st}'
     typedef struct x509_st X509;
                    ^~~~~~~
    ssl/qsslcertificate_openssl.cpp: In member function 'QByteArray QSslCertificate::version() const':
    ssl/qsslcertificate_openssl.cpp:93:68: error: invalid use of incomplete type 'X509 {aka struct x509_st}'
                 QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1);
                                                                        ^~
    In file included from /usr/include/openssl/crypto.h:31:0,
                     from /usr/include/openssl/comp.h:16,
                     from /usr/include/openssl/ssl.h:47,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:60,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/qsslcontext_openssl_p.h:1,
                     from ssl/qsslsocket_p.h:62,
                     from ssl/qsslsocket_openssl_p.h:70,
                     from ssl/qsslsocket_openssl_symbols_p.h:71,
                     from ssl/qsslcertificate_openssl.cpp:41:
    /usr/include/openssl/ossl_typ.h:119:16: note: forward declaration of 'X509 {aka struct x509_st}'
     typedef struct x509_st X509;
                    ^~~~~~~
    ssl/qsslcertificate_openssl.cpp: In member function 'QByteArray QSslCertificate::serialNumber() const':
    ssl/qsslcertificate_openssl.cpp:102:45: error: invalid use of incomplete type 'X509 {aka struct x509_st}'
             ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber;
                                                 ^~
    In file included from /usr/include/openssl/crypto.h:31:0,
                     from /usr/include/openssl/comp.h:16,
                     from /usr/include/openssl/ssl.h:47,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:60,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/qsslcontext_openssl_p.h:1,
                     from ssl/qsslsocket_p.h:62,
                     from ssl/qsslsocket_openssl_p.h:70,
                     from ssl/qsslsocket_openssl_symbols_p.h:71,
                     from ssl/qsslcertificate_openssl.cpp:41:
    /usr/include/openssl/ossl_typ.h:119:16: note: forward declaration of 'X509 {aka struct x509_st}'
     typedef struct x509_st X509;
                    ^~~~~~~
    ssl/qsslcertificate_openssl.cpp: In member function 'QSslKey QSslCertificate::publicKey() const':
    ssl/qsslcertificate_openssl.cpp:238:32: error: invalid use of incomplete type 'X509 {aka struct x509_st}'
         X509_PUBKEY *xkey = d->x509->cert_info->key;
                                    ^~
    In file included from /usr/include/openssl/crypto.h:31:0,
                     from /usr/include/openssl/comp.h:16,
                     from /usr/include/openssl/ssl.h:47,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:60,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/qsslcontext_openssl_p.h:1,
                     from ssl/qsslsocket_p.h:62,
                     from ssl/qsslsocket_openssl_p.h:70,
                     from ssl/qsslsocket_openssl_symbols_p.h:71,
                     from ssl/qsslcertificate_openssl.cpp:41:
    /usr/include/openssl/ossl_typ.h:119:16: note: forward declaration of 'X509 {aka struct x509_st}'
     typedef struct x509_st X509;
                    ^~~~~~~
    ssl/qsslcertificate_openssl.cpp:242:29: error: invalid use of incomplete type 'EVP_PKEY {aka struct evp_pkey_st}'
         if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) {
                                 ^~
    In file included from /usr/include/openssl/crypto.h:31:0,
                     from /usr/include/openssl/comp.h:16,
                     from /usr/include/openssl/ssl.h:47,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:60,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/qsslcontext_openssl_p.h:1,
                     from ssl/qsslsocket_p.h:62,
                     from ssl/qsslsocket_openssl_p.h:70,
                     from ssl/qsslsocket_openssl_symbols_p.h:71,
                     from ssl/qsslcertificate_openssl.cpp:41:
    /usr/include/openssl/ossl_typ.h:93:16: note: forward declaration of 'EVP_PKEY {aka struct evp_pkey_st}'
     typedef struct evp_pkey_st EVP_PKEY;
                    ^~~~~~~~~~~
    ssl/qsslcertificate_openssl.cpp:246:36: error: invalid use of incomplete type 'EVP_PKEY {aka struct evp_pkey_st}'
         } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) {
                                        ^~
    In file included from /usr/include/openssl/crypto.h:31:0,
                     from /usr/include/openssl/comp.h:16,
                     from /usr/include/openssl/ssl.h:47,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:60,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/qsslcontext_openssl_p.h:1,
                     from ssl/qsslsocket_p.h:62,
                     from ssl/qsslsocket_openssl_p.h:70,
                     from ssl/qsslsocket_openssl_symbols_p.h:71,
                     from ssl/qsslcertificate_openssl.cpp:41:
    /usr/include/openssl/ossl_typ.h:93:16: note: forward declaration of 'EVP_PKEY {aka struct evp_pkey_st}'
     typedef struct evp_pkey_st EVP_PKEY;
                    ^~~~~~~~~~~
    ssl/qsslcertificate_openssl.cpp:251:36: error: invalid use of incomplete type 'EVP_PKEY {aka struct evp_pkey_st}'
         } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_EC) {
                                        ^~
    In file included from /usr/include/openssl/crypto.h:31:0,
                     from /usr/include/openssl/comp.h:16,
                     from /usr/include/openssl/ssl.h:47,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:60,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/qsslcontext_openssl_p.h:1,
                     from ssl/qsslsocket_p.h:62,
                     from ssl/qsslsocket_openssl_p.h:70,
                     from ssl/qsslsocket_openssl_symbols_p.h:71,
                     from ssl/qsslcertificate_openssl.cpp:41:
    /usr/include/openssl/ossl_typ.h:93:16: note: forward declaration of 'EVP_PKEY {aka struct evp_pkey_st}'
     typedef struct evp_pkey_st EVP_PKEY;
                    ^~~~~~~~~~~
    ssl/qsslcertificate_openssl.cpp:256:36: error: invalid use of incomplete type 'EVP_PKEY {aka struct evp_pkey_st}'
         } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) {
                                        ^~
    In file included from /usr/include/openssl/crypto.h:31:0,
                     from /usr/include/openssl/comp.h:16,
                     from /usr/include/openssl/ssl.h:47,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:60,
                     from ../../include/QtNetwork/5.9.1/QtNetwork/private/qsslcontext_openssl_p.h:1,
                     from ssl/qsslsocket_p.h:62,
                     from ssl/qsslsocket_openssl_p.h:70,
                     from ssl/qsslsocket_openssl_symbols_p.h:71,
                     from ssl/qsslcertificate_openssl.cpp:41:
    /usr/include/openssl/ossl_typ.h:93:16: note: forward declaration of 'EVP_PKEY {aka struct evp_pkey_st}'
     typedef struct evp_pkey_st EVP_PKEY;
                    ^~~~~~~~~~~
    Makefile:24663: recipe for target '.obj/qsslcertificate_openssl.o' failed
    make[3]: *** [.obj/qsslcertificate_openssl.o] Error 1
    make[3]: Leaving directory '/home/tikani/Qt5.9.1/5.9.1/Src/qtbase/src/network'
    Makefile:273: recipe for target 'sub-network-make_first' failed
    make[2]: *** [sub-network-make_first] Error 2
    make[2]: Leaving directory '/home/tikani/Qt5.9.1/5.9.1/Src/qtbase/src'
    Makefile:48: recipe for target 'sub-src-make_first' failed
    make[1]: *** [sub-src-make_first] Error 2
    make[1]: Leaving directory '/home/tikani/Qt5.9.1/5.9.1/Src/qtbase'
    Makefile:82: recipe for target 'module-qtbase-make_first' failed
    make: *** [module-qtbase-make_first] Error 2
    

    By the way, libssl-dev was installed preliminarily (of version 1.1.0f-3).


  • Lifetime Qt Champion

    Then there's your problem: the OpenSSL 1.1.0 release broke API and ABI compatibility with the 1.0 release. There's currently a new backend being written for that new version but in between you have to install the libssl1.0-dev library and compile against that one.



  • @SGaist
    Does Qt have the official public bugtracker or smthing similar, where each Qt release brief desrciption comes with a list of dependencies ( where versions of these dependencies are pointed precisely)? One wants to see all possible issues and caveats.


  • Lifetime Qt Champion

    Yes, there's an official bug tracker that's mentioned numerous of time on the forum as well as on the official Qt website and it's quite easy to find. A quick search with "qt openssl 1.1" would have pointed you the related bug reports.

    On the good news front, following QTBUG-52905, Qt 5.10 should have support for OpenSSL 1.1.

    As for the release informations, you have all the change notes in the qtname_of_module/dist folder. The Qt wiki also provides pages for each release.



  • @SGaist
    It turns out that I can't downgrade the current version of libssl-dev with the package management tool because 1.1.0 - minimal available version in repos. Ok, I tried to launch configure with -no-ssl
    (./configure -static -release -opensource -confirm-license -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -no-ssl -opengl desktop -prefix /home/tikani/Qt5.9.1/5.9.1/static)
    followed by make, but ...

    /usr/bin/ld.gold: error: cannot find -lqicns
    /usr/bin/ld.gold: error: cannot find -lqtga
    /usr/bin/ld.gold: error: cannot find -lqtiff
    /usr/bin/ld.gold: error: cannot find -lqwbmp
    /usr/bin/ld.gold: error: cannot find -lqwebp
    .obj/sharedmemory_plugin_import.o:sharedmemory_plugin_import.cpp:function _GLOBAL__sub_I_sharedmemory_plugin_import.cpp: error: undefined reference to 'qt_static_plugin_QICNSPlugin()'
    .obj/sharedmemory_plugin_import.o:sharedmemory_plugin_import.cpp:function _GLOBAL__sub_I_sharedmemory_plugin_import.cpp: error: undefined reference to 'qt_static_plugin_QTgaPlugin()'
    .obj/sharedmemory_plugin_import.o:sharedmemory_plugin_import.cpp:function _GLOBAL__sub_I_sharedmemory_plugin_import.cpp: error: undefined reference to 'qt_static_plugin_QTiffPlugin()'
    .obj/sharedmemory_plugin_import.o:sharedmemory_plugin_import.cpp:function _GLOBAL__sub_I_sharedmemory_plugin_import.cpp: error: undefined reference to 'qt_static_plugin_QWbmpPlugin()'
    .obj/sharedmemory_plugin_import.o:sharedmemory_plugin_import.cpp:function _GLOBAL__sub_I_sharedmemory_plugin_import.cpp: error: undefined reference to 'qt_static_plugin_QWebpPlugin()'
    collect2: error: ld returned 1 exit status
    

    configure output:

    Creating qmake...
    ........................................................................................Done.
    
    This is the Qt Open Source Edition.
    
    You have already accepted the terms of the Open Source license.
    
    Running configuration tests...
    Done running configuration tests.
    
    Configure summary:
    
    Build type: linux-g++ (x86_64, CPU features: mmx sse sse2)
    Configuration: use_gold_linker sse2 sse3 ssse3 sse4_1 sse4_2 avx avx2 avx512f avx512bw avx512cd avx512dq avx512er avx512ifma avx512pf avx512vbmi avx512vl compile_examples enable_new_dtags f16c largefile precompile_header release c++11 c++14 c++1z concurrent dbus mremap reduce_exports reduce_relocations static stl
    Build options:
      Mode ................................... release
      Optimize release build for size ........ no
      Building shared libraries .............. no
      Using C++ standard ..................... C++1z
      Using gold linker ...................... yes
      Using new DTAGS ........................ yes
      Using precompiled headers .............. yes
      Using LTCG ............................. no
      Target compiler supports:
        SSE .................................. SSE2 SSE3 SSSE3 SSE4.1 SSE4.2
        AVX .................................. AVX AVX2 F16C
        AVX512 ............................... F ER CD PF DQ BW VL IFMA VBMI
      Build parts ............................ libs examples tools
    Qt modules and options:
      Qt Concurrent .......................... yes
      Qt D-Bus ............................... yes
      Qt D-Bus directly linked to libdbus .... no
      Qt Gui ................................. yes
      Qt Network ............................. yes
      Qt Sql ................................. yes
      Qt Testlib ............................. yes
      Qt Widgets ............................. yes
      Qt Xml ................................. yes
    Support enabled for:
      Using pkg-config ....................... yes
      QML debugging .......................... yes
      udev ................................... no
      Using system zlib ...................... no
    Qt Core:
      DoubleConversion ....................... yes
        Using system DoubleConversion ........ no
      GLib ................................... yes
      iconv .................................. no
      ICU .................................... yes
      Logging backends:
        journald ............................. no
        syslog ............................... no
        slog2 ................................ no
      Using system PCRE2 ..................... no
    Qt Network:
      getaddrinfo() .......................... yes
      getifaddrs() ........................... yes
      IPv6 ifname ............................ yes
      libproxy ............................... no
      OpenSSL ................................ no
        Qt directly linked to OpenSSL ........ no
      SCTP ................................... no
      Use system proxies ..................... yes
    Qt Gui:
      Accessibility .......................... yes
      FreeType ............................... yes
        Using system FreeType ................ no
      HarfBuzz ............................... yes
        Using system HarfBuzz ................ yes
      Fontconfig ............................. no
      Image formats:
        GIF .................................. yes
        ICO .................................. yes
        JPEG ................................. yes
          Using system libjpeg ............... no
        PNG .................................. yes
          Using system libpng ................ no
      EGL .................................... no
      OpenVG ................................. no
      OpenGL:
        Desktop OpenGL ....................... yes
        OpenGL ES 2.0 ........................ no
        OpenGL ES 3.0 ........................ no
        OpenGL ES 3.1 ........................ no
      Session Management ..................... yes
    Features used by QPA backends:
      evdev .................................. yes
      libinput ............................... no
      INTEGRITY HID .......................... no
      mtdev .................................. no
      tslib .................................. no
      xkbcommon-evdev ........................ no
    QPA backends:
      DirectFB ............................... no
      EGLFS .................................. no
      LinuxFB ................................ yes
      VNC .................................... yes
      Mir client ............................. no
      X11:
        Using system-provided XCB libraries .. no
        EGL on X11 ........................... no
        Xinput2 .............................. yes
        XCB XKB .............................. yes
        XLib ................................. yes
        XCB render ........................... yes
        XCB GLX .............................. yes
        XCB Xlib ............................. yes
        Using system-provided xkbcommon ...... no
    Qt Widgets:
      GTK+ ................................... no
      Styles ................................. Fusion Windows
    Qt PrintSupport:
      CUPS ................................... no
    Qt Sql:
      DB2 (IBM) .............................. no
      InterBase .............................. no
      MySql .................................. no
      OCI (Oracle) ........................... no
      ODBC ................................... no
      PostgreSQL ............................. no
      SQLite2 ................................ no
      SQLite ................................. yes
        Using system provided SQLite ......... no
      TDS (Sybase) ........................... no
    Qt SerialBus:
      Socket CAN ............................. yes
      Socket CAN FD .......................... yes
    QtXmlPatterns:
      XML schema support ..................... yes
    Qt QML:
      QML interpreter ........................ yes
      QML network support .................... yes
    Qt Quick:
      Direct3D 12 ............................ no
      AnimatedImage item ..................... yes
      Canvas item ............................ yes
      Support for Qt Quick Designer .......... yes
      Flipable item .......................... yes
      GridView item .......................... yes
      ListView item .......................... yes
      Path support ........................... yes
      PathView item .......................... yes
      Positioner items ....................... yes
      ShaderEffect item ...................... yes
      Sprite item ............................ yes
    Qt Gamepad:
      SDL2 ................................... no
    Qt 3D:
      Assimp ................................. yes
      System Assimp .......................... no
      Output Qt3D Job traces ................. no
      Output Qt3D GL traces .................. no
    Qt 3D GeometryLoaders:
      Autodesk FBX ........................... no
    Qt Wayland Client ........................ no
    Qt Wayland Compositor .................... no
    Qt Bluetooth:
      BlueZ .................................. no
      BlueZ Low Energy ....................... no
      Linux Crypto API ....................... no
    Qt Sensors:
      sensorfw ............................... no
    Qt Multimedia:
      ALSA ................................... yes
      GStreamer 1.0 .......................... no
      GStreamer 0.10 ......................... no
      Video for Linux ........................ yes
      OpenAL ................................. no
      PulseAudio ............................. yes
      Resource Policy (libresourceqt5) ....... no
      Windows Audio Services ................. no
      DirectShow ............................. no
      Windows Media Foundation ............... no
    Qt Quick Controls 2:
      Styles ................................. Default Material Universal
    Qt Quick Templates 2:
      Hover support .......................... yes
      Multi-touch support .................... yes
    Qt Location:
      Gypsy GPS Daemon ....................... no
      WinRT Geolocation API .................. no
    Qt WebEngine:
      Embedded build ......................... no
      Pepper Plugins ......................... yes
      Printing and PDF ....................... yes
      Proprietary Codecs ..................... no
      Spellchecker ........................... yes
      WebRTC ................................. yes
      Using system ninja ..................... no
      ALSA ................................... yes
      PulseAudio ............................. yes
      System libraries:
        ICU .................................. no
        libwebp and libwebpdemux ............. no
        Opus ................................. no
        ffmpeg ............................... no
    
    Note: Also available for Linux: linux-clang linux-icc
    
    Note: Using static linking will disable the use of dynamically
    loaded plugins. Make sure to import all needed static plugins,
    or compile needed modules into the library.
    
    Note: Dropped compiler flags '-pthread' when detecting library 'glib'.
    
    Note: Disabling Linux Accessibility Bridge: D-Bus is missing.
    
    Note: No wayland-egl support detected. Cross-toolkit compatibility disabled.
    
    Qt is now configured for building. Just run 'make'.
    Once everything is built, you must run 'make install'.
    Qt will be installed into '/home/tikani/Qt5.9.1/5.9.1/static'.
    
    Prior to reconfiguration, make sure you remove any leftovers from
    the previous build.
    

  • Lifetime Qt Champion

    Like I wrote before Debian provides libssl1.0-dev in stretch for that kind of case.

    When you modify the configure parameter you should first cleanup. In fact, you should rather do out of tree builds so if something goes wrong you can simply nuke the build folder or if you want to build with several different parameters set, you can just change to a new folder.


Log in to reply
 

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