当前位置:   article > 正文

树莓派嵌入式开发

树莓派嵌入式开发

1.QT开发环境搭建:宿主机-目标机QT交叉编译

宿主机(Ubuntu)开发环境是x86_64,目标机(树莓派)开发环境是armv7l,环境不一样,开发工具QT也不一样,需要配置两个。

1.1Ubuntu安装宿主机开发工具QT

Ubuntu使用apt-get安装的Qt版本太老了,Pass。

sudo apt-get install qt5-default qtcreator
  • 1

安装方式:官网下载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开发本地程序工具安装结束。

1.2Ubuntu安装目标机开发工具QT

QT没有提供ARM板上的QT库,需要利用源码编译出一个arm平台的QT

1.2.1QT源码下载

在这里插入图片描述
官网下载地址:https://download.qt.io/archive/qt/5.12/5.12.11/single/
在这里插入图片描述

1.2.2树莓派交叉编译链工具

我下载解压放在Ubuntu中/ARM下(自己新建目录)。
GitHub上下载树莓派的交叉编译工具。
下载地址:git://github.com/raspberrypi/tools.git
在这里插入图片描述
arm-linux-gnueabihf-gcc/g++编译器加到环境变量中

sudo nano /etc/profile 
  • 1

在最下行添加arm-linux-gnueabihf所在的bin目录,

export PATH=$PATH:/ARM/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/
  • 1

保存配置

 source /etc/profile
  • 1

1.2.3交叉编译QT源码

①配置 ②编译 ③安装

1.2.3.1配置

配置在QT源码根目录下

cd  /qtbase/mkspecs/linux-arm-gnueabi-g++ 
sudo nano qmake.conf
  • 1
  • 2

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

其中,-prefix是指定编译结果存放位置。

1.2.3.2编译

开始编译

make -j4 
  • 1
1.2.3.3安装

将编译好的文件安装

sudo make install 
  • 1

我的编译结果。
在这里插入图片描述

1.2.3部分参考:https://blog.csdn.net/dieju8330/article/details/86568144
在参考网址中只参考交叉编译部分,参考其他内容时,我在设置的时候报错了。

1.3QT Creator配置更新

1.2中我们将QT源码使用交叉编译链编译安装完成,我们在生成ARM版程序时,需要使用目标机QT进行编译。因此需要在QT Creator原本默认的编译环境中新增编译器。
在这里插入图片描述
原本只有一个默认的Desktop QT,现在我们新增ARM32。

1.3.1配置qmake

添加交叉编译的QT中的qmake
在这里插入图片描述

1.3.2配置编译器

使用下载的交叉编译链中的gcc 、g++

/ARM/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++
  • 1
/ARM/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc
  • 1

在这里插入图片描述

1.3.3配置Kits

新增ARM32,并且Compiler、Qt Version配置中选择前面刚刚配置好的即可。
在这里插入图片描述

1.4 将ARM版QT部署到树莓派

直接打包压缩传送到树莓派,然后解压缩在/user/local
在这里插入图片描述
配置:告诉系统找共享库来这里找。

sudo nano /etc/ld.so.conf
  • 1

最后一行添加

/usr/local/arm_QT/lib
  • 1

在这里插入图片描述

保存配置

 sudo ldconfig
  • 1

1.5测试

跑了程序能行!
在这里插入图片描述

2.QT Creator远程调试程序

QT提供了自定义目标程序运行平台的功能。Device设置运行平台。
在这里插入图片描述

2.1配置Device

选择“添加”,信息填写如下:
设备类型为通用Linux设备
在这里插入图片描述
设备信息
在这里插入图片描述
秘钥选择忽略,直接下一步。
在这里插入图片描述

2.2配置Debugger

Ubuntu安装gdb-multiarch (多架构的调试器)

sudo apt-get install gdb-multiarch
  • 1

QT Creator的Debugger选择gdb-multiarch
在这里插入图片描述
配置Kits中ARM32
在这里插入图片描述

2.3配置树莓派

嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb,Target Board端使用gdbserver
调试时,应用程序在嵌入式目标系统上运行,而gdb调试在Host端。
gdb调试的时候,pc机上的gdb向开发板上的gdbserver发出命令,而开发板上的gdbserver就会向应用程序发出信号,使应用程序停下来或者完成其他一些工作!

树莓派安装安装gdbserver

sudo apt-get install gdbserver
  • 1

2.4程序RUN配置

2.4.1程序.Pro文件设置

添加程序运行位置:树莓派上的位置

target.path = /home/pi/Desktop
INSTALLS += target
  • 1
  • 2

在这里插入图片描述

2.4.2运行设置

.Pro文件配置好后,会对应显示远程部署的文件位置。
同时,我们需要通过SFTP上传文件,并且取消“增量部署”
在Environment中,我们要添加DISPLAY参数,设置值为“:0”,否则会报错没有连接显示屏。
在这里插入图片描述

3.常见问题

3.1程序远程运行在树莓派中,提示找不到lib***.so

1.4中没有设置好,系统找不到我们部署的arm_QT

3.2程序远程运行在树莓派中,提示没有连接任何显示器

Could not connect to display Could not connect to any X display
  • 1

没有设置RUN中Environment的DISPLAY值

3.3Qt远程部署失败,提示"没有那个文件或目录"的解决方法

RUN默认选择了“增量部署”,取消勾选即可。
在这里插入图片描述

3.4在ARM板上的Qt中写的OpenGL出现libEGL warning: DRI2:failed to authenticate有界面但是没有我画的图

使用root权限运行文件

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号