Problème installation Qt4.7 sur distribution Linux Buster
-
Bonjour,
Je travaille actuellement sur un projet créé avec QT4.7 sous une distribution Linux Lenny.
Je suis confronté à un problème de communication avec un périphérique en usb (protocole hid).
J'ai donc créé un projet de test sous Qt5.11 sur une distribution Linux Buster. La communication est opérationnelle.
Avant de ma lancer dans la migration de tout le projet sur Qt5 (ou Qt6), j'ai tenté d'installer Qt4.7 sur la distribution Linux Buster, mais je suis confronté à un problème de compilation de cette version de Qt.J'ai téléchargé Qt4.7 depuis cette source : https://download.qt.io/archive/qt/4.7/
Ma version de Qt4 est 4.7.4 (avec QtCreator 2.2.0) => qt-everywhere-opensource-src-4.7.4.tar.gzJ'ai ensuite suivi les étapes mentionnées ici : https://doc.qt.io/archives/qt-4.7/qt-embedded-install.html
L'étape de configuration est ok (./configure)
L'étape de build plante à la fin visiblement avec les messages d'erreurs suivants :
In file included from ../../include/QtCore/qmap.h:1,
from ../../include/QtCore/../../src/corelib/kernel/qvariant.h:49,
from ../../include/QtCore/qvariant.h:1,
from global/qt_pch.h:60:../../include/QtCore/../../src/corelib/tools/qmap.h: In instantiation of ‘T& QMap<Key, T>::operator[](const Key&) [with Key = int; T = inotify_event]’:
io/qfilesystemwatcher_inotify.cpp:364:33: required from here
../../include/QtCore/../../src/corelib/tools/qmap.h:531:45: error: value-initialization of incomplete type ‘char []’
node = node_create(d, update, akey, T());In file included from /usr/include/features.h:424,
from /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:33,
from /usr/include/string.h:26,
from ../../include/QtCore/../../src/corelib/tools/qbytearray.h:48,
from ../../include/QtCore/qbytearray.h:1,
from ../../include/QtCore/../../src/corelib/tools/qstring.h:46,
from ../../include/QtCore/qstring.h:1,
from ../../include/QtCore/../../src/corelib/kernel/qobject.h:48,
from ../../include/QtCore/qobject.h:1,
from ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:45,
from ../../include/QtCore/qcoreapplication.h:1,
from global/qt_pch.h:58:../../include/QtCore/../../src/corelib/tools/qmap.h: In instantiation of ‘struct QMapNode<int, inotify_event>’:
../../include/QtCore/../../src/corelib/tools/qmap.h:532:28: required from ‘T& QMap<Key, T>::operator[](const Key&) [with Key = int; T = inotify_event]’
io/qfilesystemwatcher_inotify.cpp:364:33: required from here/usr/include/x86_64-linux-gnu/sys/inotify.h:34:13: error: flexible array member ‘inotify_event::name’ not at end of ‘struct QMapNode<int, inotify_event>’
char name __flexarr; /* Name. */
make[1]: *** [Makefile:16430: .obj/release-shared/qfilesystemwatcher_inotify.o] Error 1
make[1] : on quitte le répertoire « /home/patrick/qt4/qt-everywhere-opensource-src-4.7.4/src/corelib »
make: *** [Makefile:206: sub-corelib-make_default-ordered] Error 2
Le problème semble venir du fichier "qfilesystemwatcher_inotify.cpp:364:33"
Y a-t-il une solution pour pouvoir installer Qt4.7 dans la distribution Linux Buster ?
Merci d'avance pour votre support.
-
Bonsoir,
Le plus simple serait d'utiliser Qt 4 fournit avec Buster. Cette version sera à jour.
-
Bonsoir,
Merci pour votre réponse.
J'ai installé Buster dans une VM qui tourne sur mon Window 8.1, tout comme j'avais Lenny dans une autre VM. Mais il n'y a aucun Qt fourni avec Buster lors de l'installation. J'ai dû installer Qt par la suite et j'avais opté pour Qt5 à ce moment-là (c'était en octobre dernier).
Ai-je raté quelque chose ?
-
Ce sont des packages à installer en utilisant apt. Il faut installer les packages de développement correspondant.
-
Qt Creator supporte Qt 4 et 5. La version de Qt utilisée pour le compiler n'a rien à voir avec la version utilisé pour le développement d'applications/libraries.
-
Les widgets ont leur propre module dans Qt 5:
QT += widgets
dans le fichier .pro et ce sera bon.