This is a static archive of our old Q&A Site. Please post any new questions and answers at ask.wireshark.org.

Compile source to dpkg on Debian 8.5

0

Hi,

I am trying to get 2.05 to compile on Debian 8.5. I have had a bit of a ride, but I got all of it working (command line from compile directory with sudo runs wireshark fine)

$ WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1 ./wireshark

I am now trying to compile as a dpkg.. Had a few errors which I have managed to workaround / fix (libcap version changed etc) but I am really stuck on:

77% Building CXX object ui/qt/CMakeFiles/qtui.dir/bluetooth_hci_summary_dialog.cpp.o
In file included from /home/steve/Downloads/wireshark-2.0.5/ui/qt/bluetooth_hci_summary_dialog.cpp:23:0:
/home/steve/Downloads/wireshark-2.0.5/ui/qt/ui_bluetooth_hci_summary_dialog.h:13:25: fatal error: QtGui/QAction: No such file or directory
 #include <QtGui/QAction>
                     ^
compilation terminated.
ui/qt/CMakeFiles/qtui.dir/build.make:1451: recipe for target 'ui/qt/CMakeFiles/qtui.dir/bluetooth_hci_summary_dialog.cpp.o' failed
make[4]: *** [ui/qt/CMakeFiles/qtui.dir/bluetooth_hci_summary_dialog.cpp.o] Error 1
make[4]: Leaving directory '/home/steve/Downloads/wireshark-2.0.5/obj-x86_64-linux-gnu'
CMakeFiles/Makefile2:8448: recipe for target 'ui/qt/CMakeFiles/qtui.dir/all' failed
make[3]: *** [ui/qt/CMakeFiles/qtui.dir/all] Error 2
make[3]: Leaving directory '/home/steve/Downloads/wireshark-2.0.5/obj-x86_64-linux-gnu'
Makefile:140: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/steve/Downloads/wireshark-2.0.5/obj-x86_64-linux-gnu'
dh_auto_build: make -j1 returned exit code 2
debian/rules:34: recipe for target 'override_dh_auto_build' failed
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory '/home/steve/Downloads/wireshark-2.0.5'
debian/rules:27: recipe for target 'build' failed
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
>

The directory is in /usr/include/..., I have installed QTWidgets etc. Any ideas anyone?

asked 19 Aug '16, 03:28

DarrenWright's gravatar image

DarrenWright
216141520
accept rate: 26%

edited 19 Aug '16, 03:52

grahamb's gravatar image

grahamb ♦
19.8k330206

Hmm. According to QT Docs: In Qt5, QAction header is in QtWidgets include sub-directory, not in QtGui (that's true for Qt4).

Soo. Updated the ui_bluetooth_hci_summary_dialog.h to QTWidget instead of QTGui, now I have new problems :/

/home/steve/Downloads/wireshark-2.0.5/ui/qt/ui_bluetooth_hci_summary_dialog.h:146:132: error: ‘UnicodeUTF8’ is not a member of ‘QApplication’ BluetoothHciSummaryDialog->setWindowTitle(QApplication::translate("BluetoothHciSummaryDialog", "Bluetooth HCI Summary", 0, QApplication::UnicodeUTF8

Stupid question: Should Wireshark be built on QT4 or QT5??

(19 Aug '16, 09:31) DarrenWright

One Answer:

0

Updated the ui_bluetooth_hci_summary_dialog.h

The beginning of that file, on my machine, says:

/********************************************************************************
** Form generated from reading UI file 'bluetooth_hci_summary_dialog.ui'
**
** Created by: Qt User Interface Compiler version 5.5.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

so it's not our file, it's a file generated by "Qt User Interface Compiler", i.e. the uic command.

"Qt User Interface Compiler version 5.5.0" means it's the version of uic that comes with Qt 5.5; if you're building with Qt 4, you need to use the version of uic that comes with Qt 4, and if you're building with Qt 5, you need to use the version of uic that comes with Qt 5.

/home/steve/Downloads/wireshark-2.0.5/ui/qt/ui_bluetooth_hci_summary_dialog.h:146:132: error: ‘UnicodeUTF8’ is not a member of ‘Application’

It's a member in Qt 4, but not in Qt 5.

Should Wireshark be built on QT4 or QT5??

The answer to that question is "yes, because the GTK+ UI is deprecated, we don't support Qt 3 or earlier, and there is no Qt 6, so you should either build it on Qt 4 or Qt 5."

If you build it on Qt 4, you should make sure you have all the Qt build tools for Qt 4 installed, including uic.

If you build it on Qt 5, you should make sure you have all the Qt build tools for Qt 5 installed, including uic.

If you have both of them installed, the wrong one might be used. There's a comment in the acinclude.m4 script that says:

    #
    # At least in some versions of Debian/Ubuntu, and perhaps
    # other OSes, the Qt build tools are just links to a
    # program called "qtchooser", and even if you want to
    # build with Qt 5, running the tool might give you the
    # Qt 4 version of the tool unless you run the tool with
    # a -qt=5 argument.
    #
    # So we look for qtchooser and, if we find it, use the
    # -qt={version} argument, otherwise we look for particular
    # tool versions using tool name suffixes.

so the configure script at least tries to make sure the right version is used.

For CMake, we may rely on Qt to set up the right "find Qt and its tools" stuff, and that might be failing.

answered 19 Aug '16, 15:06

Guy%20Harris's gravatar image

Guy Harris ♦♦
17.4k335196
accept rate: 19%