Dear Community,
currently I am trying to cross compile an OPC UA Server Project with Qt Creator 5.15.2 on Raspberry Pi 4B Model.
For the cross compilation, I used the following installation guide: 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++
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 Forum, but I didn`t got an answer ;)
https://forum.qt.io/topic/123832/qt-opcua-server-deployment-error
Thank you in Advance!
The first and possible workaround is: to check your GCC compiler options to remove the "-Werror“ ( warning will be taken as an error )。
The second solution is to modify the source file of "/tmp/ccF0J1PW.s" to remove the 32-bit Thumb instructions in the IT blocks.
-mrestrict-it
Restricts generation of IT blocks to conform to the rules of ARMv8-A. IT blocks can only contain a single 16-bit instruction from a select set of instructions. This option is on by default for ARMv8-A Thumb mode.
See https://community.arm.com/developer/ip-products/processors/f/cortex-m-forum/7299/warning-it-blocks-containing-32-bit-thumb-instructions-are-deprecated-in-armv8-with-gcc-4-9 for more details.