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 followingconfigure
:./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. -
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.
-
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 version1.1.0f-3
). -
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. -
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 oflibssl-dev
with the package management tool because 1.1.0 - minimal available version in repos. Ok, I tried to launchconfigure
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 bymake
, 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.
-
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.
-
@SGaist said in Qt 5.9.1 static build Linux:
libssl1.0-dev
Hello @SGaist
Thank you for your reply.
I have exactly same problem and I am not able to install libssl1.0-dev using
apt-get install libssl1.0-dev
on my ubuntu machine. can you please inform me what can I do now ? Thanks :)
-
What version of Debian are you currently using ?