树莓派+Qt5.9.9 交叉编译

本文提供了一套详细的树莓派+QT5.9.9交叉编译流程,包括系统编译、QT环境配置、程序编写与配置等环节,并附带了解决常见问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载 树莓派+QT5.9.9交叉编译,100%可以使用的交叉编译

感谢原文作者: SimbaHiker

第一部分 系统编译

第一步: 清单

Rufus: https://github.com/pbatard/rufus/releases/download/v3.17/rufus-3.17.exe

VMware: 15.5.6

Ubuntu 14.04 64bit  https://releases.ubuntu.com/trusty/ubuntu-14.04.6-desktop-amd64.iso

树莓派: raspberry pi 2 model B

raspberry pi img: 2019-04-08-raspbian-stretch.zip http://downloads.raspberrypi.org/raspbian/images/raspbian-2019-04-09/2019-04-08-raspbian-stretch.zip

QT: qt-opensource-linux-x64-5.9.6_2.run 

http://mirrors.sjtug.sjtu.edu.cn/qt/archive/qt/5.9/5.9.6/qt-opensource-linux-x64-5.9.6.run

QT source code: 

git clone git://code.qt.io/qt/qt5.git -b 5.9

cross-compile-tools: fixQualifiedLibraryPaths

原作者 上述部分文件链接 链接: 百度网盘 请输入提取码 提取码: z5h1

为防止失效, 也可以使用我的连接:https://pan.baidu.com/s/16oiFh7KQ8q2Hm-D58SOEAw 提取码: jfwe 

第二步 基础准备

推荐使用Vmware, 因为其有快照功能 当需要进行下一个不确定的步骤时 可以使用快照功能, 一旦"失手", 可以快速复原

2.1 使用Vmware 加载Ubuntu 14 的iso 安装

2.2 安装 Vmware tools 并启用 共享

安装VMware tools 可以参考这里: VMware Tools安装_Death Note-优快云博客

如果是灰色的可以直接去VMware的安装目录中找到linux.iso, 加载到虚拟机的光驱中 然后解压执行 ./vmware-install.pl

启用共享可以参考这里: https://jingyan.baidu.com/article/d5c4b52ba4f3a3da570dc579.html

2.3 Ubuntu14 中的安装

sudo apt-get update
sudo apt-get -y install git
sudo apt-get install ia32-libs

 当执行上面这条代码时 会出现如下图:

 依次安装替代库:

sudo apt-get -y install lib32ncurses5
sudo apt-get -y install lib32z1
sudo apt-get -y install lib32bz2-1.0

然后是cross-compile-tools的库:

sudo apt-get -y install lib32stdc++6 

QT编译需要安装的编译链:

sudo apt-get -y install g++

2.4 文件及文件夹准备

sudo mkdir /mnt/rasp-pi-rootfs/
sudo mkdir /mnt/rasp-boot/
mkdir ~/rpi
mkdir ~/rpi/cross-compile-tools

sudo mkdir /usr/local/rpi

# 下载好的文件
# 2019-04-08-raspbian-stretch.img
# tools.gz (如果使用git可以不用放这个文件)
# fixQualifiedLibraryPaths
# qt5.tar.gz(如果使用git可以不用放这个文件)
# 全部放在 前面配置的共享目录中, 此处假设在share\qt_raspi_build\下

# 复制文件

cp /mnt/hgfs/share/qt_raspi_build/2019-04-08-raspbian-stretch.img ~/rpi/
cp /mnt/hgfs/share/qt_raspi_build/fixQualifiedLibraryPaths ~/rpi/cross-compile-tools
# 以下两个文件如果使用git下载可以不用复制
cp /mnt/hgfs/share/qt_raspi_build/qt5.tar.gz ~/rpi/
cp /mnt/hgfs/share/qt_raspi_build/tools.gz ~/rpi/

# 加载树莓派镜像
cd ~/rpi/
fdisk -l 2019-04-08-raspbian-stretch.img

# 按照原文作者的做法
# 挂载偏移值计算 offset=98304*512=50331648
sudo mount -o offset=50331648 -t ext4 2019-04-08-raspbian-stretch.img /mnt/rasp-pi-rootfs/

# 挂载boot 同理offset=8192*512= 4194304
sudo mount -o offset=4194304 -t vfat 2019-04-08-raspbian-stretch.img /mnt/rasp-boot/
# 准备交叉编译链 按照原文作者的做法
# 如果使用 git
cd /usr/local/rpi
sudo git clone git://github.com/raspberrypi/tools.git
# 有个思想准备, 可能会很慢的...

使用下载的tools.gz的方法
sudo tar zxvf ~/rpi/tools.gz -C /usr/local/rpi/
#准备cross-compile-tools工具
cd ~/rpi/cross-compile-tools
chmod +x fixQualifiedLibraryPaths
sudo ./fixQualifiedLibraryPaths /mnt/rasp-pi-rootfs/ /usr/local/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc

上述命令执行后 显示:

# 编译QT源码库
# 使用git下载的方法
cd ~
git clone git://code.qt.io/qt/qt5.git -b 5.9
cd qt5/
./init-repository
# 这个真不推荐, 太慢了...

# 使用qt5.tar.gz的方法
cd rpi
tar zxvf qt5.tar.gz -C ~/

 第三步 编译

从这一步开始 跟作者原文 稍有不同,  原文作者非常尽责的把中间 试错的过程都贴出来了,  我跟着照做了一遍, 那简直是一样一样的. 有兴趣的同学可以跟着试试, 最好是 先创建快照以后 再试.

原文中 直接按照第五步 中创建 软连接的方法 是会 出错的.

Too many levels of symbolic links

需要变更一下 原文中创建软连接的顺序

cd /mnt/rasp-pi-rootfs/opt/vc/lib/
sudo ln -s libbrcmEGL.so libEGL.so
sudo ln -s libbrcmGLESv2.so libGLESv2.so
sudo ln -s libEGL.so libEGL.so.1
sudo ln -s libGLESv2.so libGLESv2.so.2

cd /mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf
sudo mv libEGL.so.1.0.0 libEGL.so.1.0.0_backup
sudo mv libGLESv2.so.2.0.0 libGLESv2.so.2.0.0_backup
sudo ln -s ../../../opt/vc/lib/libEGL.so libEGL.so.1.0.0
sudo ln -s ../../../opt/vc/lib/libGLESv2.so libGLESv2.so.2.0.0

配置:

cd ~/qt5/
./configure -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=/usr/local/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- -sysroot /mnt/rasp-pi-rootfs/ -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -make tools -prefix /usr/local/qt5pi -v -nomake examples -nomake tests -no-use-gold-linker

编译:

# j 后面的数字代表 多线程编译, 也可以直接make 不带参数
# 时间 不短, 足够抽根烟了
make -j4

sudo make install 

第四步: 镜像烧写

按照原文步骤 又稍有不同

sudo sync
sudo sudo umount /mnt/rasp-pi-rootfs
# 复制到windows的共享目录中
# 自定义名称
cp ~/rpi/2019-04-08-raspbian-stretch.img /mnt/hgfs/share/qt_raspi_build/xxx.img

使用Rufus 烧录进SD卡, 放入树莓派 2 Model B中 就可以启动了.

第二部分 程序编写与配置

第二部分跟原文相同, 原文链接: 树莓派+QT5.9.9交叉编译(QT环境配置篇)

为防止 被湮灭在网络中, 特意搬迁在此.

另外是前面描述使用5.9.9,现在为什么换成了5.9.6的QT,我们这里主要用到QT的qtctreator和qmake(桌面版本),在使用5.9.9会出现dbus库版本过旧的问题,更新库后还要更新一堆库,所以退而求其次使用5.9.6版本。我们使用的紧是5.9.6版本中的qcreator,我们核心编译器已经是5.9.9了。
 

到官网上下载,Index of /archive/qt

下载的版本是qt-opensource-linux-x64-5.9.6.run,使用WinScp下载到虚拟机中。

添加可执行权限

chmod +x qt-opensource-linux-x64-5.9.6.run
./qt-opensource-linux-x64-5.9.6.run

第二步 qt安装

然后选择组件进行安装。

需要有在官网注册个QT账号。

输入账号和密码后,默认安装即可。

配置选择,然后就是下一步直到完成。


 

第三步 准备工作

在前一章节中,我们烧写镜像时将镜像文件取消挂载。现在我们需要用到镜像文件中的qmake 和交叉编译环境,需要重新挂载镜像。

cd ~/rpi
sudo mount -o offset=50331648 -t ext4 2019-04-08-raspbian-stretch.img /mnt/rasp-pi-rootfs/

在~/Qt5.9.6/Tools/QtCreator/bin中找到qtcreator

cd ~/Qt5.9.6/Tools/QtCreator/bin
./qtcreator

QT5.9.9版本在14.04 x64系统中会弹出如下错误,如下图。

为了减少麻烦,我们直接选择了5.9.6版本QT。

第四步 qt配置

打开qtcreator

~/Qt5.9.6/Tools/QtCreator/bin/./qtcreator

Tools -> Options

编译链配置

下图被遮挡的编译链路径为: /usr/local/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++

下图被遮挡的路径为: /usr/local/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc

好了从官方例程中打开一个工程,选择配置


 

先在linux下选择Desktop 进行编译并运行,这时会弹出一个错误


 

我们安装如下内容可解决。

sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev

安装完成后,我们关闭Qtcreator再次打开运行Demo

然后将Kit选择为RaspberryPi,然后进行Rebueld


 

这时我们可以在build-gallery-RaspberryPi-Release文件中找到树莓派可执行程序gallery


 

我如何将编译出的程序下载到树莓派中呢,方法挺多的:

1,使用winscp将程序先搬到windows中,再搬移到树莓派中;

2,直接下载到树莓派中。

此时 使用 U盘 拷贝 gallery 至 树莓派中运行时 界面上没有任何文字,  不必慌张, 可以参考最后一步, 复制字体文件 至 树莓派即可.

下面我们来讲下如何可以直接下载到树莓派中。

先启动手上的树莓派,然后查看下树莓派上的IP,让树莓派和我们现在的主机在同一个局域网内。

然后我们配置树莓派的IP和登录信息。注意:登录信息是树莓派的账号和密码。


 

成功连接如下图所示


点击OK 后我们再次配置Kits

修改工程文件pro修改target.path = /home/pi/,完成后就可以点击debug了。


 

由于我们现在没有安装字库,所以无法显示汉字。先准备好wqy-zenhei.ttc,用winscp先导入到树莓派的用户目录下。

sudo mkdir /usr/local/qt5pi/lib/fonts
sudo mv wqy-zenhei.ttc /usr/local/qt5pi/lib/fonts

现在我们就可以编译Raspberry应用并下载到目标板执行。

好了 全文结束了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值