Installation of Qt4.7 on Debian Buster distribution
-
Hello,
I'm currently working on a Qt4.7 projet compiled on a Debian Lenny distribution.
I encountered library incompatibility for communicating with an USB HID reader.
I tried a test project for this communication on a Qt5 projet on a Debian Buster distribution : it is ok
The same test project on my Qt4.7 project fails.
Thus, before moving all the project to a newer version of Qt (5 or 6), I tried to install the Qt4.7 on the Debian Buster distribution. But compilation fails at 'make' step.Here is what I have done :
1/ I have downloaded Qt4 from here : https://download.qt.io/archive/qt/4.7/
My Qt4 version is 4.7.4 (with QtCreator 2.2.0) => qt-everywhere-opensource-src-4.7.4.tar.gz
2/ I then followed steps given here : https://doc.qt.io/archives/qt-4.7/qt-embedded-install.html3/ 'configure' step is ok and finished with following message :
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /usr/local/Trolltech/Qt-4.7.4
To reconfigure, run 'make confclean' and 'configure'.
4/ I then run make :
root@pc-debian:/home/patrick/qt4/qt-everywhere-opensource-src-4.7.4# makeAnd after several minutes following error messages appear :
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. */
And a few seconds after the end is :
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
Thus, it seems that there is a problem with "qfilesystemwatcher_inotify.cpp:364:33"
Is there any way to correct this in order to can install Qt4.7 into Linux Buster distribution ?
Thank you in advance for your answer.
Best Regards,
Patrick -
Hello,
I'm currently working on a Qt4.7 projet compiled on a Debian Lenny distribution.
I encountered library incompatibility for communicating with an USB HID reader.
I tried a test project for this communication on a Qt5 projet on a Debian Buster distribution : it is ok
The same test project on my Qt4.7 project fails.
Thus, before moving all the project to a newer version of Qt (5 or 6), I tried to install the Qt4.7 on the Debian Buster distribution. But compilation fails at 'make' step.Here is what I have done :
1/ I have downloaded Qt4 from here : https://download.qt.io/archive/qt/4.7/
My Qt4 version is 4.7.4 (with QtCreator 2.2.0) => qt-everywhere-opensource-src-4.7.4.tar.gz
2/ I then followed steps given here : https://doc.qt.io/archives/qt-4.7/qt-embedded-install.html3/ 'configure' step is ok and finished with following message :
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /usr/local/Trolltech/Qt-4.7.4
To reconfigure, run 'make confclean' and 'configure'.
4/ I then run make :
root@pc-debian:/home/patrick/qt4/qt-everywhere-opensource-src-4.7.4# makeAnd after several minutes following error messages appear :
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. */
And a few seconds after the end is :
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
Thus, it seems that there is a problem with "qfilesystemwatcher_inotify.cpp:364:33"
Is there any way to correct this in order to can install Qt4.7 into Linux Buster distribution ?
Thank you in advance for your answer.
Best Regards,
Patrick -
@jsulm : Thank you for your advice !
I have just downloaded corresponding version (4.8.7) an tried to install it.
Unfortunately, compilation also fails, but with another error message concerning another module :
In file included from ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastAllocBase.h:84,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/Vector.h:24,
from ../3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_exec.cpp:50:
../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:173:69: error: ‘std::tr1’ has not been declared
template<typename T> struct HasTrivialConstructor : public std::tr1::has_trivial_constructor<T> { };
^~~
../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:173:74: error: expected ‘{’ before ‘has_trivial_constructor’
template<typename T> struct HasTrivialConstructor : public std::tr1::has_trivial_constructor<T> { };
^~~~~~~~~~~~~~~~~~~~~~~
../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:174:68: error: ‘std::tr1’ has not been declared
template<typename T> struct HasTrivialDestructor : public std::tr1::has_trivial_destructor<T> { };
^~~
../3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h:174:73: error: expected ‘{’ before ‘has_trivial_destructor’
template<typename T> struct HasTrivialDestructor : public std::tr1::has_trivial_destructor<T> { };
^~~~~~~~~~~~~~~~~~~~~~
In file included from ../3rdparty/javascriptcore/JavaScriptCore/wtf/VectorTraits.h:24,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/Vector.h:27,
from ../3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_exec.cpp:50:
../3rdparty/javascriptcore/JavaScriptCore/wtf/OwnPtr.h:43:21: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
OwnPtr(std::auto_ptr<ValueType> autoPtr) : m_ptr(autoPtr.release()) { }
^~~~~~~~
In file included from /usr/include/c++/8/memory:80,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/OwnPtr.h:29,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/VectorTraits.h:24,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/Vector.h:27,
from ../3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_exec.cpp:50:
/usr/include/c++/8/bits/unique_ptr.h:53:28: note: declared here
template<typename> class auto_ptr;
^~~~~~~~
In file included from ../3rdparty/javascriptcore/JavaScriptCore/wtf/VectorTraits.h:24,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/Vector.h:27,
from ../3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_exec.cpp:50:
../3rdparty/javascriptcore/JavaScriptCore/wtf/OwnPtr.h:61:25: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
void adopt(std::auto_ptr<ValueType> autoPtr) { ASSERT(!autoPtr.get() || m_ptr != autoPtr.get()); deleteOwnedPtr(m_ptr); m_ptr = autoPtr.release(); }
^~~~~~~~
In file included from /usr/include/c++/8/memory:80,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/OwnPtr.h:29,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/VectorTraits.h:24,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/Vector.h:27,
from ../3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_exec.cpp:50:
/usr/include/c++/8/bits/unique_ptr.h:53:28: note: declared here
template<typename> class auto_ptr;
^~~~~~~~
In file included from ../3rdparty/javascriptcore/JavaScriptCore/wtf/Vector.h:27,
from ../3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_exec.cpp:50:
../3rdparty/javascriptcore/JavaScriptCore/wtf/VectorTraits.h:84:30: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
struct VectorTraits<std::auto_ptr<P> > : SimpleClassVectorTraits { };
^~~~~~~~
In file included from /usr/include/c++/8/memory:80,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/OwnPtr.h:29,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/VectorTraits.h:24,
from ../3rdparty/javascriptcore/JavaScriptCore/wtf/Vector.h:27,
from ../3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_exec.cpp:50:
/usr/include/c++/8/bits/unique_ptr.h:53:28: note: declared here
template<typename> class auto_ptr;
^~~~~~~~
make[1]: *** [Makefile:1624: obj/release/pcre_exec.o] Error 1
make[1] : on quitte le répertoire « /home/patrick/qt4/qt-everywhere-opensource-src-4.8.7/src/script »
make: *** [Makefile:602: sub-script-make_default-ordered] Error 2 -
Hi,
Why not use the Qt 4 version provided by your distribution ?