Closed andimik closed 7 months ago
@andimik Hello Andi, yes I followed also your contribution to Abracadbra and Qt-DAB (thanks Jan for that, I learnt a lot with his work). Thanks for trying out my project.
I tried to make my build complete warning and (of course) error free. For my developing system (Xubuntu 22.04 LTE) I already made many adaptions, at least using the latest Qt5 (5.15.2).
I needed some code adaption for building my AppImages with a native Ubuntu 20.04 which uses the "build-in" Qt 5.12.8.
I think in a native Ubuntu 22.04 there is a Qt version used between 5.15.2 and 5.12.8 which only should cause some deprecation warnings but not such a failure like you have.
This failure is strange because the mention method interval(Qt::Axis x)
is really a overwritten virtual function of the Qwt library. It is first defined in class QwtRasterData
(file qwt_raster_data.h:98).
Do you really build with Qwt 6.2.0? https://sourceforge.net/projects/qwt/files/qwt/6.2.0/qwt-6.2.0.zip/download.
There was formerly a Qwt version check in the cmake process but it worked not reliable on my machine, so I removed it.
Nevertheless, I will try to setup a virtual machine with a fresh Ubuntu 22.04 LTS and see whats happen there. Hope I can do this in the later evening today.
Try to remove libqwt-qt5-dev. It is an older version.
Well I tried both, using all (Ubuntu 22.04 default) Qt and qwt packages I am using for qt-dab. And then installed 6.2.0.
The error keeps the same. But I have no idea, if the 6.2.0 interferes with the installed one or overwrites it. (I am not a programmer).
Try to remove libqwt-qt5-dev. It is an older version.
I will test it.
@andimik : I could reproduce the issue. It really seems that the Qwt libqwt-qt5-dev
from the Ubuntu 22.04-repo is an older Version 6.1.4.
I will try the next days if this version is good to work with DABstar and if yes, making it compatibel with QWT 6.2.0 and this 6.1.4.
Meanwhile: I have not tried it out but it could work to deinstall libqwt-qt5-dev
(as @old-dab proposed) with
sudo apt remove libqwt-qt5-dev
(hope this is correct, I am currently not on Linux)
and hopefully the new version of Qwt 6.2.0 is found afterwards if you build and installed that too.
Would be interesting for me: Have you tried out the AppImage (https://github.com/tomneda/DABstar/releases) I provided whether it works on your side?
Thanks for your feedback.
Well, this solved the initial issue, but I still couldn't complete the compilation.
As far as I remember, the problem was in
#include <qwt.h>
Will test the newer commit in the weekend.
The AppImage works under 64bit, but wanted to compile it also on my 32bit Raspberry.
@andimik Please avoid trying out commits on my development branch, there are seen also as backup for me and could not work (I wrote this also into that commit that it is not working yet). If something works well (or better) I will shiftet it to the main branch and inform you here.
It is very strange: Ubuntu 22.04 LTS provides the Qt 5.15.3. This is newer than the newest commercial-free installable version 5.15.2 which I use on my Xubuntu 22.04. And with this 5.15.3 I got many deprecation warning between Qwt 6.1.4 and Qt which are not easily to handle.
Regarding the "override" problem I only removed that keyword because that base class provides no virtual method to be overrided. So I am not sure if the method is really called finally. For my first run I got segmentations vaults but on an unexpected place. I still have to dig deeper into that.
Regarding Raspberry: I never tried to build my repo on other than my machine (i7-6700K). On my, meanwhile older 6th gen. CPU, it works quite fine and also fluently in debug builds. But I am not sure if it works on a (likely) less powerfull Raspi. Jan seems taking much more effort into Qt-DAB for testing this also on such devices and optimize there. Additionally I implemented things which takes more CPU time, especially in the OFDM decoder where I collect statistic data or doing (several selectable) Soft-Bit-Decision to increase the sensitivy in worse receiving conditions.
But If you want doing the effort on Rasp it would interessting for if it works :-)
I now achieved to build it successfully using e137c491dca4f79d049f455fbd3ddb753d9ed39e
Have deleted all files in the build
directory and used ccmake
first using the following parameters:
AIRSPY ON
CMAKE_BUILD_TYPE
CMAKE_INSTALL_PREFIX /usr/local/bin
CONV_IN_FILES ON
DATA_STREAMER OFF
FDK_AAC OFF
HACKRF OFF
LIMESDR OFF
LSB_RELEASE /usr/bin/lsb_release
PLUTO OFF
PTHREADS /usr/lib/x86_64-linux-gnu/libpthread.a
Qt5Core_DIR /usr/lib/x86_64-linux-gnu/cmake/Qt5Core
Qt5Gui_DIR /usr/lib/x86_64-linux-gnu/cmake/Qt5Gui
Qt5Network_DIR /usr/lib/x86_64-linux-gnu/cmake/Qt5Network
Qt5Sql_DIR /usr/lib/x86_64-linux-gnu/cmake/Qt5Sql
Qt5Widgets_DIR /usr/lib/x86_64-linux-gnu/cmake/Qt5Widgets
Qt5Xml_DIR /usr/lib/x86_64-linux-gnu/cmake/Qt5Xml
RTLSDR_LINUX ON
RTLSDR_WIN OFF
RTL_TCP ON
SDRPLAY_V2 OFF
SDRPLAY_V3 OFF
UHD OFF
USE_FFT FFTW3
USE_HBF OFF
USE_LTO OFF
VITERBI_NEON OFF
VITERBI_SSE ON
But as soon as I want to build it for HackRF, then there is a compiler error and it fails:
$ make
[ 1%] Automatic MOC and UIC for target dabstar_devices
[ 1%] Built target dabstar_devices_autogen
Consolidate compiler generated dependencies of target dabstar_devices
[ 2%] Building CXX object src/devices/CMakeFiles/dabstar_devices.dir/dabstar_devices_autogen/mocs_compilation.cpp.o
In file included from /home/andreas/apps/DABstar/build/src/devices/dabstar_devices_autogen/HPAZXAQTMY/moc_hackrf-handler.cpp:10,
from /home/andreas/apps/DABstar/build/src/devices/dabstar_devices_autogen/mocs_compilation.cpp:11:
/home/andreas/apps/DABstar/build/src/devices/dabstar_devices_autogen/HPAZXAQTMY/../../../../../src/devices/hackrf-handler/hackrf-handler.h:82:56: error: use of enum ‘hackrf_board_rev’ without previous declaration
82 | using pfn_hackrf_board_rev_name = const char* (*)(enum hackrf_board_rev board_rev);
| ^~~~~~~~~~~~~~~~
/home/andreas/apps/DABstar/build/src/devices/dabstar_devices_autogen/HPAZXAQTMY/../../../../../src/devices/hackrf-handler/hackrf-handler.h:153:3: error: ‘hackrf_board_rev’ does not name a type; did you mean ‘hackrf_board_id’?
153 | hackrf_board_rev mRevNo = BOARD_REV_UNDETECTED;
| ^~~~~~~~~~~~~~~~
| hackrf_board_id
make[2]: *** [src/devices/CMakeFiles/dabstar_devices.dir/build.make:76: src/devices/CMakeFiles/dabstar_devices.dir/dabstar_devices_autogen/mocs_compilation.cpp.o] Fehler 1
make[1]: *** [CMakeFiles/Makefile2:255: src/devices/CMakeFiles/dabstar_devices.dir/all] Fehler 2
make: *** [Makefile:136: all] Fehler 2
@andimik yes, this is some kind the same problem like with Qwt: I try to use the newest driver for that things. And I own also an HackRf which I want using the newest feature and refactored the HackRf-Driver of Qt-DAB a lot. (I needed a ppm shift which was not working)
Like Qwt 6.2.0 I also build the HackRf driver for myself and uses this description here: https://hackrf.readthedocs.io/en/latest/installing_hackrf_software.html for building and installing.
I copied the relevant content here:
Acquire the source for the HackRF tools from either a release archive or git: git clone https://github.com/mossmann/hackrf.git
Once you have the source downloaded, the host tools can be built as follows:
cd hackrf/host mkdir build cd build cmake .. make sudo make install sudo ldconfig
But maybe you need to deinstall your current HackRf driver because I am not shure if you suffer from the (likely) same problem like with Qwt 6.2.0. Can you please try the above steps? And if it works maybe the same procedure works with Qwt 6.2.0, too?
BTW1: Are the AppImage not working already for your needs? You only need compiling yourself if you want modifying things in my opinion? :grin:
BTW2: If the V2.3.0 builds better than the V2.4.0 I would wonder. The main difference are made in the SDRplay device handler, nothing with Qwt.
Thanks for your hints. Indeed, when I have removed all hackrf packages and compile the latest driver and then compile DABstar, then there is no single compilation warning!
Very very good job, dear Thomas!
@andimik : I could build a version which seems to work with Qwt 6.1.4. But as it seems that you could manage using Qwt 6.2.0 I would prefer not to add these changes to my mainline as they make the code more unclean and I suppress warnings which I want not to suppress generally.
I make an extra branch for that adaption: https://github.com/tomneda/DABstar/tree/qwt_6.1.4_adaption If you still want to try out, feel free.
@andimik : forgot to say (in German): "Danke für die Blumen" for that:
... Very very good job, dear Thomas!
:bouquet: :grin:
But back to English, maybe others could be interested in this also:
I try to build DABstar with native Qt
and Qwt
and I succeeded. The newer Qwt 6.2.0
is still working if wanted.
The only disadvantages are the deprecate-warnings as the Qwt 6.1.4
does not really fit to the Qt 5.15.3
(but without side effects). I suppress these warnings on the release build but not on a debug build. So, a normal cmake
and make
should not show such an warning.
I improved the description for the installing process for Ubuntu in the README.
Look at the newest mainline commit if you want trying this out.
I removed the former side branch "qwt_6.1.4_adaption" as it was a bit faulty and is not more necessary.
Regarding https://github.com/tomneda/DABstar/issues/13#issuecomment-2016582903 I did not looked yet why NEON for the Raspi is not building.
Have pulled latest commit. Building works without any error, and making the installation it ok, too, but then I cannot start the program due to qwt error ...
_resources.cpp.o
[100%] Linking CXX executable dabstar
[100%] Built target dabstar
andreas@E535:~/apps/DABstar/build$ sudo make install
[ 1%] Automatic MOC and UIC for target dabstar_devices
[ 1%] Built target dabstar_devices_autogen
Consolidate compiler generated dependencies of target dabstar_devices
[ 15%] Built target dabstar_devices
[ 16%] Automatic MOC and UIC for target dabstar_fft
[ 16%] Built target dabstar_fft_autogen
Consolidate compiler generated dependencies of target dabstar_fft
[ 22%] Built target dabstar_fft
[ 23%] Automatic MOC and UIC for target dabstar
[ 23%] Built target dabstar_autogen
Consolidate compiler generated dependencies of target dabstar
[100%] Built target dabstar
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/bin/dabstar
-- Set runtime path of "/usr/local/bin/dabstar" to ""
andreas@E535:~/apps/DABstar/build$ cd
andreas@E535:~$ dabstar
dabstar: error while loading shared libraries: libqwt.so.6.2: cannot open shared object file: No such file or directory
I've again checked the path:
andreas@E535:~/apps/qwt-6.2.0$ sudo make install | grep libqwt
/usr/lib/qt5/bin/qmake -install qinstall -exe ../lib/libqwt.so.6.2.0 /usr/local/qwt-6.2.0/lib/libqwt.so.6.2.0
strip --strip-unneeded /usr/local/qwt-6.2.0/lib/libqwt.so.6.2.0
ln -f -s libqwt.so.6.2.0 /usr/local/qwt-6.2.0/lib/libqwt.so
ln -f -s libqwt.so.6.2.0 /usr/local/qwt-6.2.0/lib/libqwt.so.6
ln -f -s libqwt.so.6.2.0 /usr/local/qwt-6.2.0/lib/libqwt.so.6.2
It's /usr/local/qwt-6.2.0/lib/libqwt.so.6.2
, then I copied it into another folder: sudo cp /usr/local/qwt-6.2.0/lib/libqwt.so.6.2 /usr/lib
and it worked then.
For many years, I have been building latest software packages from Jan (and contribute regularly, for example Qt-DAB) and have found your repository recently, so I tried to build
DABstar
under Ubuntu 22.04 LTS, but I couldn't.I even have installed qwt 6.2.0 as mentioned in your readme.