赞
踩
宿主机(Ubuntu)开发环境是x86_64,目标机(树莓派)开发环境是armv7l,环境不一样,开发工具QT也不一样,需要配置两个。
Ubuntu使用apt-get安装的Qt版本太老了,Pass。
sudo apt-get install qt5-default qtcreator
安装方式:官网下载qt安装包,直接run安装。
下载地址:https://download.qt.io/archive/qt/5.12/5.12.11/
复制到Ubuntu的Home目录下,执行安装。安装run文件参考:https://blog.csdn.net/zhouzying/article/details/84555158
我安装在/opt
目录下
此时,Ubuntu使用QT开发本地程序工具安装结束。
QT没有提供ARM板上的QT库,需要利用源码编译出一个arm平台的QT
官网下载地址:https://download.qt.io/archive/qt/5.12/5.12.11/single/
我下载解压放在Ubuntu中/ARM
下(自己新建目录)。
GitHub上下载树莓派的交叉编译工具。
下载地址:git://github.com/raspberrypi/tools.git
将 arm-linux-gnueabihf-gcc/g++
编译器加到环境变量中
sudo nano /etc/profile
在最下行添加arm-linux-gnueabihf
所在的bin
目录,
export PATH=$PATH:/ARM/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/
保存配置
source /etc/profile
①配置 ②编译 ③安装
配置在QT源码根目录下
cd /qtbase/mkspecs/linux-arm-gnueabi-g++
sudo nano qmake.conf
将arm-linux-gnueabi
替换为我们的交叉编译工具 arm-linux-gnueabihf
通过 arm-linux-gnueabihf-gcc -v
查询对应的Target
在QT源码根目录下,新建一个autoconfig.sh
文件,将下面的内容复制到里面,然后运行。
#!/bin/sh ./configure -prefix /opt/arm_QT \ -opensource \ -release \ -no-pch \ -confirm-license \ -xplatform linux-arm-gnueabi-g++ \ -qt-zlib \ -no-iconv \ -no-nis \ -qt-libjpeg \ -no-opengl \ -no-cups \ -no-rpath \ -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \ -no-avx \ -no-openssl \ -nomake tools \ -qreal float \ -qt-libpng \ -nomake examples
其中,-prefix是指定编译结果存放位置。
开始编译
make -j4
将编译好的文件安装
sudo make install
我的编译结果。
1.2.3部分参考:https://blog.csdn.net/dieju8330/article/details/86568144
在参考网址中只参考交叉编译部分
,参考其他内容时,我在设置的时候报错了。
1.2中我们将QT源码使用交叉编译链编译安装完成,我们在生成ARM版程序时,需要使用目标机QT进行编译。因此需要在QT Creator原本默认的编译环境中新增编译器。
原本只有一个默认的Desktop QT,现在我们新增ARM32。
添加交叉编译的QT中的qmake
使用下载的交叉编译链中的gcc 、g++
/ARM/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++
/ARM/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc
新增ARM32,并且Compiler、Qt Version配置中选择前面刚刚配置好的即可。
直接打包压缩传送到树莓派,然后解压缩在/user/local
配置:告诉系统找共享库来这里找。
sudo nano /etc/ld.so.conf
最后一行添加
/usr/local/arm_QT/lib
保存配置
sudo ldconfig
跑了程序能行!
QT提供了自定义目标程序运行平台的功能。Device设置运行平台。
选择“添加”,信息填写如下:
设备类型为通用Linux设备
设备信息
秘钥选择忽略,直接下一步。
Ubuntu安装gdb-multiarch
(多架构的调试器)
sudo apt-get install gdb-multiarch
QT Creator的Debugger选择gdb-multiarch
配置Kits中ARM32
嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb
,Target Board端使用gdbserver
。
调试时,应用程序在嵌入式目标系统上运行,而gdb调试在Host端。
gdb调试的时候,pc机上的gdb向开发板上的gdbserver发出命令,而开发板上的gdbserver就会向应用程序发出信号,使应用程序停下来或者完成其他一些工作!
树莓派安装安装gdbserver
sudo apt-get install gdbserver
添加程序运行位置:树莓派上的位置
target.path = /home/pi/Desktop
INSTALLS += target
.Pro文件配置好后,会对应显示远程部署的文件位置。
同时,我们需要通过SFTP上传文件,并且取消“增量部署”
在Environment中,我们要添加DISPLAY参数,设置值为“:0”,否则会报错没有连接显示屏。
1.4中没有设置好,系统找不到我们部署的arm_QT
Could not connect to display Could not connect to any X display
没有设置RUN中Environment的DISPLAY值
RUN默认选择了“增量部署”,取消勾选即可。
使用root权限运行文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。