我正在我的笔记本电脑(Linux LMDE 3 Cindy OS)上使用 QT Creator 并进行 Raspberry 交叉编译。
我已经安装了基于QT的此指令并按此设置:
mkdir ~/raspi
cd ~/raspi
git clone https://github.com/raspberrypi/tools
mkdir sysroot sysroot/usr sysroot/opt
rsync -avz pi@raspberrypi_ip:/lib sysroot
rsync -avz pi@raspberrypi_ip:/usr/include sysroot/usr
rsync -avz pi@raspberrypi_ip:/usr/lib sysroot/usr
rsync -avz pi@raspberrypi_ip:/opt/vc sysroot/opt
wget http://download.qt.io/official_releases/qt/5.12/5.12.3/single/ qt-everywhere-src-5.12.3.tar.xz
tar xvf qt-everywhere-src-5.12.3.tar.xz
cd qt-everywhere-src-5.12.3
./configure -release -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -skip qtwayland -skip qtlocation -skip qtscript -make libs -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -no-use-gold-linker -v -no-gbm
make
make install
但当我去我的QT 创建者我已经建立了一个样本Qt Widget 应用程序。我的 desktop2.pro
文件是这种:
#-------------------------------------------------
#
# Project created by QtCreator 2019-05-29T19:53:02
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = desktop2
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
CONFIG += c++11
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /home/so/Desktop/trash/desktop1/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
所以当我想用我的桌面套件并且想在我的 PC 上运行它(而不是在 Raspberry 中),我收到此错误:
20:46:55: Starting /home/so/Desktop/trash/desktop1/desktop2/bin/desktop2 ...
bash: /home/so/Desktop/trash/desktop1/desktop2/bin/desktop2: cannot execute binary file: Exec format error
bash: /home/so/Desktop/trash/desktop1/desktop2/bin/desktop2: Success
20:46:55: Application finished with exit code 126.
我的Qt 版本是如下所示: 在此处输入图片描述
我的桌面套件设置 i显示已吹响: 桌面套件设置
和我的台式电脑 SS 设备设置如下所示:
和我的 GCC 编译器设置如下所示: GCC 编译器设置
和我的qt 树莓派编译器设置如下所示: 在此处输入图片描述
- 我猜是 GCC 编译器和 Qt 版本之间存在冲突
V 5.12.3
。所以我必须使用较低的版本Qt版本? - 或者我必须在新文件夹中使用新的配置设置再次安装该 qt 版本?
- 或者还有什么其他推荐吗?
我在 qt 社区的这个问题链接:
https://forum.qt.io/topic/103462/qt-creator-error-with-application-finished-with-exit-code-126
更新:在 Qt Creator GUI 中的桌面套件名称附近有一个红色警告标记,当我将鼠标悬停在其上时会显示以下信息:
由这个错误:
Error: The compiler "GCC (C++,X86 64bit in /usr/bin)" (X86-linux-generic-elf-64bit) cannot produce code for the Qt Version "Qt 5.12.3 (qt5)" (arm-linux-generic-elf-32bit).
对不起,我知道交叉编译是在我的 Linux 操作系统中编写代码并在例如我的 Raspberry 中运行,但正如我提到的,我现在不想这样做,我需要通过我的笔记本电脑 Linux 操作系统(通过桌面套件)测试我的代码。所以我该怎么做?我必须使用新的配置安装新的 qt v5.12.3 吗?或者我可以使用新的 GCC 编译器设置来用于我的桌面套件吗?
抱歉,我是 Qt 新手。
多谢。