0

currently I am trying to cross compile a stand-alone Opc Ua Server on a Raspberry Pi4B with Qt 5.15.2 and the Qt Opc Ua Plugin. For Cross Compilation, I used this instruction: https://wapel.de/?p=842. My source code is based on the official waterpump example: https://doc.qt.io/QtOPCUA/qtopcua-waterpump-waterpump-qmlcpp-example.html

My exact problem is: The Relaese-Version of the Server does not deploy on the Raspberry Pi correctly.

After building the software, I get following error code within the error log window

/tmp/ccF0J1PW.s:-1: Error: Assembler messages:

The compiler log window shows this error description:

/tmp/ccF0J1PW.s: Assembler messages:
/tmp/ccF0J1PW.s:4206: IT blocks containing 32-bit Thumb instructions are deprecated in ARMv8
/tmp/ccF0J1PW.s:13562: IT blocks containing 32-bit Thumb instructions are deprecated in ARMv8
/tmp/ccF0J1PW.s:71648: IT blocks containing 32-bit Thumb instructions are deprecated in ARMv8

After running the Application with the error, I got the following Output in the Application Window:

Could not initialize server.
double free or corruption (fasttop)

My Qt-Development-Kit for Cross Compiling is using the following Compiler-Combination:

  • C++ Compiler: gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf-g++
  • C Compiler: gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf-gcc

Is there anyone who had the same problem? I would be glad to get any tips, how to solve this.

By the way: I posted the same thread within the Qt and ARM Forum, but I didn`t got an answer ;)

Thank you in Advance!

3
  • Suggest that you compile Qt on the Pi4b. It has enough horsepower to do so, and then anything you write for the Pi can be compiled directly on the Pi. Feb 19, 2021 at 14:06
  • Dear guitarpicva, thank you for your tip. I will try this out an let you know if I was succesful.
    – Mauda
    Feb 20, 2021 at 7:59
  • I've even done this on an RPi3B+, but that is a painful process. the RPi4 with it's better CPU and more RAM makes it doable. Start with at least a 32 GB SD card, or larger, otherwise you may risk filling the file system on the SD card. Feb 20, 2021 at 13:16

1 Answer 1

0

First, compile Qt on the RPi 4.
Then install the build-essential package and you will be able to compile any relevant Qt source code on the RPi directly at the command line.

Using a shadow build process:

Ensure that the path to the qmake executable is on your path.

/home/me/src/MyProg/ contains your source files and .pro file for the project.

/home/me/build/MyProg/ is the shadow build area.

cd /home/me/build/MyProg and run the qmake and make steps as:

qmake ../../src/MyProg/MyProg.pro && make

If qmake and make are both successful, your executable will be in the build folder /home/me/build/MyProg/

SIGNIFICANT UPDATE: RPi OS Bullseye now hat Qt5.15.2 libraries in the package system!

So the answer transforms to "Install Qt5 base libraries" instead of "First, compile Qt on the RPi 4."

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.