Problems when adding serialport module in Qt project
-
@Pablo-J.-Rogina Thanks a lot for your post, I'll now begin to put it into practice. I have just one doubt: if I run:
qmake --version
I obtain:
QMake version 2.01a Using Qt version 4.8.7 in /usr/lib/x86_64-linux-gnu
So, if I'm not wrong, the installed version of Qt is the 4.8.7 (quite old). When you stated, in your #1 step, "git clone git://code.qt.io/qt/qtserialport.git -b 5.9" were you assuming my Qt version was 5.9? In other words, the serialport version and the installed qt version should be the same?
If so, how can I upgrade from my actual Qt version to the latest one?
Thanks a lot! -
First you should find out which Qt versions you have on your computer. Qt 4.8.7 is surely from Ubuntu and is a native Qt - you build programs that run on your computer. What you want, is a cross Qt, to run programs on your embedded device.
As you said you have already done this, you surely have a second Qt version (I cannot tell you which one it is). And this Qt version has a qmake which you need to call to compile Qt programs against this Qt library.
Regards
-
@aha_1980 Thanks. In Qt Creator I set Qt 5.7.1 in the "Qt Version" for the selected kit for my project. Now I can add the serialport module in my .pro file and build the app, but when I try to run it on my target device, the application does not start and the following error appears:
error while loading shared libraries: libQt5SerialPort.so.5: cannot open shared object file: No such file or directory
Is it related to the serialport module that is not cross compiled or have I to install some dependencies on the target device itself?
Thank you! -
@douglas said in Problems when adding serialport module in Qt project:
Is it related to the serialport module that is not cross compiled or have I to install some dependencies on the target device itself?
You're already on the right track. You need to cross-compile QtSerialPort for your embedded device, and then you need to deploy (copy over) these libraries to the device, because your final app is also running there.
-
@aha_1980 Ok,thanks! I just did the following on my host PC:
$ git clone git://code.qt.io/qt/qtserialport.git $ mkdir qtserialport-build $ cd qtserialport-build $ qmake ../qtserialport/qtserialport.pro
but the last command (qmake) gives the following:
Project MESSAGE: Cannot build current QtSerialPort sources with Qt version 4.8.7. Project ERROR: Use at least Qt 5.0.0 or try to download QtSerialPort for Qt4.
It is clear that I need to use a newer qmake, perhaps the default one is an older version. How can I run that command with a qmake version 5? Where should it be located? Or how can I "change the default one"?
Thanks for your patience. -
@aha_1980 Done, I found the qmake for version 5 and run the qmake command.
Now, when I run themake make install
this error appears:
fatal error: qdeadlinetimer.h: File o directory non esistente compilation terminated.
Which can be the solution?
-
@douglas Looks good so far.
But let's move slowly. I re-read you post from 5 hours ago:
@aha_1980 Thanks. In Qt Creator I set Qt 5.7.1 in the "Qt Version" for the selected kit for my project. Now I can add the serialport module in my .pro file and build the app
If you can build the app, then you already have the serialport module!
but when I try to run it on my target device, the application does not start and the following error appears:
But you don't have the libraries on your target device.
-
@douglas In the most easy and hacky way, just copy the needed *.so files to the other Qt *.so files on your device.
Depending on your cross toolchain, there may be a more clean way (like building a new image), but that - as said - depends on you toolchain.
-
-
@Pablo-J.-Rogina , @aha_1980 thank you. I expected to find the libQt5SerialPort.so.5 (the missing library) inside the qtserialport folder generated after the steps:
$ git clone git://code.qt.io/qt/qtserialport.git $ mkdir qtserialport-build $ cd qtserialport-build $ qmake ../qtserialport/qtserialport.pro
but I couldn't find it. I searched into my host PC for that file, I found few results, but they are located into the Qt installation folder, they are not cross-compiled for my needs, I think.
When exactly that library should be created, or where it should be located?
Thanks!