Problems building 5.6.2 on Raspberry Pi 5 with Raspbian 12 (Debian Bookworm)
-
I am trying to build QT 5.6.2 on my Raspberry Pi 5 (which is running Raspbian 12, which ships with 5.4.2). I need 5.6.2 for Fritzing 1.0.7. I am getting this error when building:
cd qtbase/ && ( test -e Makefile || /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/bin/qmake /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/qtbase.pro -o Makefile ) && make -f Makefile make[1]: Entering directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase' cd src/ && ( test -e Makefile || /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/bin/qmake /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/src.pro -o Makefile ) && make -f Makefile make[2]: Entering directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src' cd tools/bootstrap/ && ( test -e Makefile || /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/bin/qmake /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/bootstrap/bootstrap.pro -o Makefile ) && make -f Makefile make[3]: Entering directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/bootstrap' make[3]: Nothing to be done for 'first'. make[3]: Leaving directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/bootstrap' cd tools/moc/ && ( test -e Makefile || /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/bin/qmake /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/moc/moc.pro -o Makefile ) && make -f Makefile make[3]: Entering directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/moc' make[3]: Nothing to be done for 'first'. make[3]: Leaving directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/moc' cd tools/rcc/ && ( test -e Makefile || /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/bin/qmake /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/rcc/rcc.pro -o Makefile ) && make -f Makefile make[3]: Entering directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/rcc' make[3]: Nothing to be done for 'first'. make[3]: Leaving directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/rcc' cd corelib/ && ( test -e Makefile || /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/bin/qmake /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/corelib/corelib.pro -o Makefile ) && make -f Makefile make[3]: Entering directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/corelib' make[3]: Nothing to be done for 'first'. make[3]: Leaving directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/corelib' cd tools/qlalr/ && ( test -e Makefile || /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/bin/qmake /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/qlalr/qlalr.pro -o Makefile ) && make -f Makefile make[3]: Entering directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/qlalr' make[3]: Nothing to be done for 'first'. make[3]: Leaving directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/tools/qlalr' cd network/ && ( test -e Makefile || /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/bin/qmake /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/network/network.pro -o Makefile ) && make -f Makefile make[3]: Entering directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/network' g++ -c -include .pch/Qt5Network -pipe -O2 -std=c++1z -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wall -W -D_REENTRANT -fPIC -DQT_NO_MTDEV -DQT_NO_TSLIB -DQT_NO_LIBINPUT -DQT_NO_USING_NAMESPACE -DQT_BUILD_NETWORK_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 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_CORE_LIB -I. -Ikernel -I../../include -I../../include/QtNetwork -I../../include/QtNetwork/5.6.2 -I../../include/QtNetwork/5.6.2/QtNetwork -I../../include/QtCore/5.6.2 -I../../include/QtCore/5.6.2/QtCore -I../../include/QtCore -I.moc -I../../mkspecs/linux-g++ -o .obj/qsslcertificate_openssl.o ssl/qsslcertificate_openssl.cpp ssl/qsslcertificate_openssl.cpp: In function ‘uint qHash(const QSslCertificate&, uint)’: ssl/qsslcertificate_openssl.cpp:63:30: error: invalid use of incomplete type ‘X509’ {aka ‘struct x509_st’} 63 | return qHashBits(x509->sha1_hash, SHA_DIGEST_LENGTH, seed); | ^~ In file included from /usr/include/openssl/crypto.h:38, from /usr/include/openssl/comp.h:22, from /usr/include/openssl/ssl.h:30, from ../../include/QtNetwork/5.6.2/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53, from ../../include/QtNetwork/5.6.2/QtNetwork/private/qsslcontext_openssl_p.h:1, from ssl/qsslsocket_p.h:55, from ssl/qsslsocket_openssl_p.h:63, from ssl/qsslsocket_openssl_symbols_p.h:64, from ssl/qsslcertificate_openssl.cpp:35: /usr/include/openssl/types.h:159:16: note: forward declaration of ‘X509’ {aka ‘struct x509_st’} 159 | typedef struct x509_st X509; | ^~~~~~~ ssl/qsslcertificate_openssl.cpp: In member function ‘QByteArray QSslCertificate::version() const’: ssl/qsslcertificate_openssl.cpp:87:68: error: invalid use of incomplete type ‘X509’ {aka ‘struct x509_st’} 87 | QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1); | ^~ /usr/include/openssl/types.h:159:16: note: forward declaration of ‘X509’ {aka ‘struct x509_st’} 159 | typedef struct x509_st X509; | ^~~~~~~ ssl/qsslcertificate_openssl.cpp: In member function ‘QByteArray QSslCertificate::serialNumber() const’: ssl/qsslcertificate_openssl.cpp:96:45: error: invalid use of incomplete type ‘X509’ {aka ‘struct x509_st’} 96 | ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber; | ^~ /usr/include/openssl/types.h:159:16: note: forward declaration of ‘X509’ {aka ‘struct x509_st’} 159 | typedef struct x509_st X509; | ^~~~~~~ ssl/qsslcertificate_openssl.cpp: In member function ‘QSslKey QSslCertificate::publicKey() const’: ssl/qsslcertificate_openssl.cpp:232:32: error: invalid use of incomplete type ‘X509’ {aka ‘struct x509_st’} 232 | X509_PUBKEY *xkey = d->x509->cert_info->key; | ^~ /usr/include/openssl/types.h:159:16: note: forward declaration of ‘X509’ {aka ‘struct x509_st’} 159 | typedef struct x509_st X509; | ^~~~~~~ ssl/qsslcertificate_openssl.cpp:236:29: error: invalid use of incomplete type ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’} 236 | if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) { | ^~ /usr/include/openssl/types.h:107:16: note: forward declaration of ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’} 107 | typedef struct evp_pkey_st EVP_PKEY; | ^~~~~~~~~~~ ssl/qsslcertificate_openssl.cpp:240:36: error: invalid use of incomplete type ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’} 240 | } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) { | ^~ /usr/include/openssl/types.h:107:16: note: forward declaration of ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’} 107 | typedef struct evp_pkey_st EVP_PKEY; | ^~~~~~~~~~~ ssl/qsslcertificate_openssl.cpp:245:36: error: invalid use of incomplete type ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’} 245 | } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_EC) { | ^~ /usr/include/openssl/types.h:107:16: note: forward declaration of ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’} 107 | typedef struct evp_pkey_st EVP_PKEY; | ^~~~~~~~~~~ ssl/qsslcertificate_openssl.cpp:250:36: error: invalid use of incomplete type ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’} 250 | } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) { | ^~ /usr/include/openssl/types.h:107:16: note: forward declaration of ‘EVP_PKEY’ {aka ‘struct evp_pkey_st’} 107 | typedef struct evp_pkey_st EVP_PKEY; | ^~~~~~~~~~~ make[3]: *** [Makefile:22139: .obj/qsslcertificate_openssl.o] Error 1 make[3]: Leaving directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/network' make[2]: *** [Makefile:191: sub-network-make_first] Error 2 make[2]: Leaving directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src' make[1]: *** [Makefile:46: sub-src-make_first] Error 2 make[1]: Leaving directory '/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase' make: *** [Makefile:73: module-qtbase-make_first] Error 2The version of libssl installed is 3.0.20-1~deb12u2+rpt1.
-
This ancient Qt version does not build with openssl 3.x - you need either openssl 1.x or disable ssl for the Qt build.
-
OK, after disabling openssl (./configure ... -no-openssl), I am getting this error:
qxcbconnection_xi2.cpp:701:80: error: operator '&&' has no right operand 701 | #elif LIBXI_MAJOR == 1 && (LIBXI_MINOR < 7 || (LIBXI_MINOR == 7 && LIBXI_PATCH < 4)) | ``` ^ -
Hi and welcome to devnet,
Might be a silly question but did you do a cleanup before reconfiguring ?
Also, please use out of source builds, it makes things way easier.
-
I did a "make clean", is that enough?
-
I cleared everything, unpacked the source tar fresh and created a BUILD directory and started the build over. Make crashes at the same place.
-
I tried with -no-xcb, but now make is failing here:
make[7]: Entering directory '/home/heller/qt-everywhere-opensource-src-5.6.2/BUILD/qtbase/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice' g++ -c -pipe -O2 -std=c++1z -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wall -W -D_REENTRANT -fPIC -DQT_NO_MTDEV -DQT_NO_TSLIB -DQT_NO_LIBINPUT -DMESA_EGL_NO_X11_HEADERS -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_EGLFS_DEVICE_LIB_LIB -DQT_PLATFORMSUPPORT_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice -I. -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/plugins/platforms/eglfs -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/include -I../../../../../../include -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/include/QtPlatformSupport -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/include/QtPlatformSupport/5.6.2 -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/include/QtPlatformSupport/5.6.2/QtPlatformSupport -I../../../../../../include/QtPlatformSupport -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/include/QtGui/5.6.2 -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/include/QtGui/5.6.2/QtGui -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/include/QtGui -I../../../../../../include/QtGui -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/include/QtCore/5.6.2 -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/include/QtCore/5.6.2/QtCore -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/include/QtCore -I../../../../../../include/QtCore -I.moc -I/home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/mkspecs/linux-g++ -o .obj/qeglfskmsegldevicemain.o /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicemain.cpp In file included from /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldeviceintegration.h:49, from /home/heller/qt-everywhere-opensource-src-5.6.2/qtbase/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicemain.cpp:34: /usr/include/xf86drm.h:40:10: fatal error: drm.h: No such file or directory 40 | #include <drm.h> -
Might be a silly question but are you sure you installed all development dependencies ?
-
I think so. drm.h is actually installed:
marchhare% locate drm.h|grep '/drm.h$' /usr/include/drm/drm.h /usr/include/libdrm/drm.h /usr/src/linux-headers-6.12.75+rpt-common-rpi/include/uapi/drm/drm.h /usr/src/linux-headers-6.12.93+rpt-common-rpi/include/uapi/drm/drm.h marchhare% dpkg-query -S /usr/include/drm/drm.h linux-libc-dev: /usr/include/drm/drm.h marchhare% marchhare% dpkg-query -S /usr/include/libdrm/drm.h libdrm-dev:arm64: /usr/include/libdrm/drm.h marchhare% dpkg-query -S /usr/src/linux-headers-6.12.75+rpt-common-rpi/include/uapi/drm/drm.h linux-headers-6.12.75+rpt-common-rpi: /usr/src/linux-headers-6.12.75+rpt-common-rpi/include/uapi/drm/drm.h marchhare% dpkg-query -S /usr/src/linux-headers-6.12.93+rpt-common-rpi/include/uapi/drm/drm.h linux-headers-6.12.93+rpt-common-rpi: /usr/src/linux-headers-6.12.93+rpt-common-rpi/include/uapi/drm/drm.hI don't know what is missing...
The configure script completed without problems -- wouldn't it crash if something essentual was missing?
-
Wondering: should the build statement include
-I/usr/include/libdrm:marchhare% pkg-config libdrm --cflags-only-I -I/usr/include/libdrmIt doesn't. This would explain the problem. This suggests that there is a problem in the configure script or configure tests or the Makefiles (or the generation of the Makefiles).
-
I edited the Makefile and added
-I/usr/include/libdrmto the INCPATH and that cured things.,, -
OK, now the build creashes here:
/home/heller/qt-everywhere-opensource-src-5.6.2/qtserialbus/src/plugins/canbus/socketcan/socketcanbackend.cpp: In member function ‘void SocketCanBackend::readSocket()’: /home/heller/qt-everywhere-opensource-src-5.6.2/qtserialbus/src/plugins/canbus/socketcan/socketcanbackend.cpp:594:30: error: ‘SIOCGSTAMP’ was not declared in this scope; did you mean ‘SIOCGRARP’? 594 | if (ioctl(canSocket, SIOCGSTAMP, &timeStamp) < 0) { | ^~~~~~~~~~ | SIOCGRARP make[5]: *** [Makefile:950: .obj/socketcanbackend.o] Error 1 -
I edited socketcanbackend.cpp to include the missing include file (<linux/sockios.h>) and compiling is proceding...