Solved Create embedded QT Gui applications for a Bananapi-M2-Zero
-
Did you saw this guide ?
-
It seems to work.
After the command make I get the error :
ssl/qsslcertificate_openssl.cpp:63:30: error: invalid use of incomplete type ‘X509’ {aka ‘struct x509_st’}
63 | return qHashBits(x509->sha1_hash, SHA_DIGEST_LENGTH, seed);I'm not sure if I have to install a previous compatible version of libssl1.0 for armhf.
-
Which version of Qt are you building exactly now ?
Which exact version of OpenSSL do you have at hand for your target ? -
It is qt-everywhere-opensource-src-5.5.1 according to your adviced website, I substituted gnueabi by gnueabihf.
By default on my PC Ubuntu 20 64 bits is this single file called:
/usr/bin/openssl : ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=4d2003d01494e5fd39293fdc8379c406d6b641b2, for GNU/Linux 3.2.0, strippedOtherwise I have this old version file used by an old system (not arm) with qt 4.8
... /platform/sysroot-target/usr/bin/openssl: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.23, with debug_info, not strippedA few month ago I compiled the operating system Ubuntu MATE image (BPI-M2P-bsp-4.4) for my BananaPi M2 zero. It was successful and it actually works. I remember I had to create
/usr/lib/arm-liunx-gnueabihf and put some things into manually regarding the error messages. The compilation of Qt seems to use this folder too. In this folder there is
/usr/lib/arm-linux-gnueabihf/openssl-1.0.0/engines
with
lib4758cca.so
libaep.so
libatalla.so
libcapi.so
libchil.so
libcswift.so
libgmp.so
libgost.so
libnuron.so
libpadlock.so
libsureware.so
libubsec.soIn the package for the os compilation there is
... /BPI-M2P-bsp-4.4/sunxi-pack/pctools/linux/openssl
containing:
create_toc0
dragonsecboot
genrsa
rec
rsa
x509there is a sourcecode three in:
... /BPI-M2P-bsp-4.4/u-boot-sunxi/lib/opensslThere is a library three in another operating system package (BPI-M2Z) that I could not compile
... /BPI-M2Z/sysroot/usr/lib/arm-linux-gnueabihf/openssl-1.0.0/
a single library
... /BPI-M2Z/sysroot/usr/lib/arm-linux-gnueabihf/ruby/2.5.0/openssl.so
some pyton sourcecodes in
... /BPI-M2Z/sysroot/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl
some ruby files in
... /BPI-M2Z/sysroot/usr/lib/ruby/2.5.0/openssl
and the same three
... /BPI-M2Z-bsp/sunxi-pack/pctools/linux/openssl as in the BPI-M2P-bsp-4.4 packagePerhaps I need to create a link to the os package libraries.
I downloaded those packages:
libssl1.0-dev_1.0.2u-1~deb9u1_armhf.deb
libssl1.0.2-udeb_1.0.2u-1~deb9u1_armhf.udeb
libssl1.0-dev_1.0.2n-1ubuntu5.3_armhf.deb
but the installation fails due to dependancy.I downloaded
openssl-1.0.2k.tar.gz
which contains a configure executable, I didnt try to compile it at the moment. -
Just because the guide mentions 5.5.1, you shouldn't just go blindly with it. Use a recent version of Qt. This one is not supported anymore.
-
I downloaded from
https://ftp.osuosl.org/pub/blfs/conglomeration/qt5/
the package
qt-everywhere-src-5.14.2
containing a configure executable
I copied
/qtbase/mkspecs/linux-arm-gnueabi-g++/
to
/qtbase/mkspecs/linux-arm-gnueabihf-g++/
according to my architecture, and adapted qmake.conf wihth armgnueabi->armgnueabihf
The command line:
./configure -release -opensource -xplatform linux-arm-gnueabihf-g++ -prefix /opt/qt5-arm -no-opengl
x11 option removed because not supported.
At the end of the long make there is an error
libz.so.1, required by /home/eric/qt-everywhere-src-5.14.2/qtbase/lib/libQt5Gui.so not found. I have it on my computer at several places:
/usr/lib/i386-linux-gnu/libz.so.1
/usr/lib/x86_64-linux-gnu/libz.so.1
/usr/lib32/libz.so.1
How do I specify wich to use?
Is it in the command line? in qmake.conf? in path? perform a ln -s? -
It should be available from your device sysroot.
-
I solved this problem by adding
QMAKE_LIBS += -lz
in my qmake.conf.But now I have :
sh: 1: python: not found
Project ERROR: Building QtQml requires Python.
make: *** [Makefile:340: module-qtdeclarative-make_first] Error 3python is already installed on my computer.
-
Which version of Python ?
-
python3 -V
gives
Python 3.8.2
...
ok solved by
sudo ln -s python3 python
in /usr/bin
...
next error is:
Project ERROR: Unknown module(s) in QT: openglextensions
make[2]: *** [Makefile:96: sub-render-make_first-ordered] Error 3 -
QtQuick requires OpenGL but you disabled it.
-
Make for QT 5 arm successful
Make install successfulI create a new basic application Qt 5.14.2 Widgets. Ok With default kit.
When I select arm-linux-gnueabihf I have some compile errors:
/opt/qt5-arm/include/QtCore/qbasicatomic.h:61:4: error: #error "Qt requires C++11 support"
/opt/qt5-arm/include/QtCore/qbasicatomic.h:97:23: error: ‘QAtomicOpsSupport’ was not declared in this scope
/opt/qt5-arm/include/QtCore/qbasicatomic.h:99:14: error: ‘Ops’ has not been declared
/opt/qt5-arm/include/QtCore/qbasicatomic.h:238:13: error: ‘QAtomicOps’ does not name a type
/opt/qt5-arm/include/QtCore/qbasicatomic.h:97:51: error: ‘::IsSupported’ has not been declared
-
Did you properly create a kit using your cross-compiled Qt ?
-
Yes , I added my cross compiled(I remember I had to remove the -no-c++11 of ./configure command because it was not recognized) QT Version Qt 5.14.2(qt5-arm) /opt/qt5-arm/bin/qmake in Qc Kits and it is accepted.
I added the compilers with the package you give me:
gcc Linaro
/home/eric/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin/arm-linux-gnueabihf-gcc
g++ Linaro
/home/eric/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin/arm-linux-gnueabihf-g++
I could not add the debugger arm-Debugger from your package
/home/eric/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin/arm-linux-gnueabihf-gdb
It is not recognized by Qc. I selected GDB multiarch(/usr/bin/gdb-multiarch) which I already have.Perhaps I should have version 5.14 of compilers and debugger?
As device I have generic Linux device, Qt mkspec is empty.
How should I configure the separated device BananaPi M2 Zero connected trough Ethernet with address 192.168.1.110 to my development PC with Ubuntu Linux? Should I create something else as generic Linux Device?...
Problem solved by selecting most recent compilers.