交叉编译Qt5.12.8到树莓派3B+

硬件

主机系统:Ubuntu16.04

树莓派3B+系统:Raspbian

 

准备Raspberry Pi

/etc/apt/sources.list中的编辑源列表,并取消注释deb-src行

sudo nano /etc/apt/sources.list

更新,下载需要的开发包

sudo apt-get build-dep qt4-x11
sudo apt-get build-dep libqt5gui5
sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0

2准备Linux主机

创建文件夹

mkdir ~/raspi
cd ~/raspi

克隆交叉编译工具链

git clone https://github.com/raspberrypi/tools

将工具链二进制目录添加到PATH。打开.bashrc并在文件末尾添加行

nano ~/.bashrc
export PATH=$PATH:~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

下载Qt源码

wget https://download.qt.io/official_releases/qt/5.12/5.12.8/single/qt-everywhere-src-5.12.8.tar.xz
tar xf qt-everywhere-src-5.12.8.tar.xz

获取树莓派sysroot

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

修改raspberrypi_ip为你当前树莓派的ip地址,在同步时需要一些时间

将绝对符号链接转换为相对符号链接

#!/usr/bin/env python
import sys
import os

# Take a sysroot directory and turn all the abolute symlinks and turn them into
# relative ones such that the sysroot is usable within another system.

if len(sys.argv) != 2:
    print("Usage is " + sys.argv[0] + "<directory>")
    sys.exit(1)

topdir = sys.argv[1]
topdir = os.path.abspath(topdir)

def handlelink(filep, subdir):
    link = os.readlink(filep)
    if link[0] != "/":
        return
    if link.startswith(topdir):
        return
    #print("Replacing %s with %s for %s" % (link, topdir+link, filep))
    print("Replacing %s with %s for %s" % (link, os.path.relpath(topdir+link, subdir), filep))
    os.unlink(filep)
    os.symlink(os.path.relpath(topdir+link, subdir), filep)

for subdir, dirs, files in os.walk(topdir):
    for f in files:
        filep = os.path.join(subdir, f)
        if os.path.islink(filep):
            #print("Considering %s" % filep)
            handlelink(filep, subdir)

将上面代码保存为sysroot-relativelinks.py

chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot

 

编译、安装Qt

cd qt-everywhere-src-5.12.8/qtbase
mkdir qt5build
cd qt5build
../configure -release -opengl es2 -device linux-rasp-pi3-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/Qt5.12.8 -extprefix ~/raspi/Qt5.12.8-pi -hostprefix ~/raspi/Qt5.12.8-host -no-use-gold-linker -v -no-gbm
make -j4
make install

编译完成后将~/raspi/Qt5.12.8-pi/拷贝到树莓派的/usr/local/Qt5.12.8/

 

参考

交叉编译并部署Qt5.12.4到树莓派3B+:https://blog.csdn.net/lixiaoxin1989/article/details/90030624

 

Qt 5.9.4和RPi的交叉编译指南:https://www.raspberrypi.org/forums/viewtopic.php?t=204529

Raspberry Pi Beginners Guide:https://wiki.qt.io/Raspberry_Pi_Beginners_Guide

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 首先,需要明确的是,树莓派4B是基于ARM架构的单板计算机,而Qt是一个跨平台的应用程序框架,支持多种操作系统和硬件平台。交叉编译是指在一台主机上编译适用于另一种不同的平台的程序。 要在树莓派4B上交叉编译Qt 5.12.9并支持OpenGL,需要按照以下步骤进行: 1. 准备交叉编译环境: - 在主机上安装交叉编译工具链,该工具链应该是针对ARM架构的。你可以在树莓派官网上找到相应的工具链。 - 下载Qt 5.12.9源代码并解压到主机上。可以从Qt官网下载源代码。 2. 配置编译环境: - 进入Qt源代码目录,运行`./configure`命令来配置编译选项。 - 设置交叉编译工具链路径,例如:`./configure -xplatform linux-arm-gnueabi-g++ -device linux-rasp-pi4-g++ -sysroot /path/to/sysroot`。 - 如果需要使用OpenGL,确保在配置选项中启用OpenGL相关选项,例如:`-opengl es2 -device-option CROSS_COMPILE=/path/to/cross-compiler`。 3. 编译和安装Qt: - 运行`make`命令开始编译Qt。这个过程可能会耗费一些时间,请耐心等待。 - 编译完成后,运行`make install`命令来安装Qt到指定目录。 4. 在树莓派上部署和测试: - 将编译好的Qt安装目录复制到树莓派上。 - 在树莓派上编写一个简单的Qt程序,并尝试运行以验证交叉编译是否成功,并且能够使用OpenGL功能。 需要注意的是,以上步骤只是一个简要的概述,实际操作可能会因为环境和配置的不同而有所不同。在进行此过程时,建议参考Qt的官方文档和树莓派相关的论坛、社区以获得更具体的指导和帮助。 ### 回答2: 树莓派4B 是一款强大的单板计算机,由于其资源受限,为了满足更高的性能需求,可以使用交叉编译技术在其他主机上编译运行Qt 5.12.9和OpenGL。 首先,我们需要准备一个具备足够性能的主机,用于进行交叉编译。这个主机可以是一台电脑或服务器,确保其硬件配置和性能足够强大。 接下来,我们需要在主机上安装交叉编译工具链。交叉编译工具链包括交叉编译器、交叉链接器和交叉工具等。可以根据所使用的操作系统,在主机上下载相应的交叉编译工具链。 然后,我们将Qt 5.12.9和OpenGL源代码下载到主机上。确保选取适用于树莓派4B的源代码版本,并将其解压到合适的目录中。 接着,我们可以创建一个交叉编译的目录,用于存放编译生成的可执行文件。进入该目录,并配置Qt和OpenGL的编译选项。一般情况下,我们需要指定交叉编译器、库的路径和安装的目标路径等。 然后,我们可以执行编译命令,开始交叉编译Qt和OpenGL。编译过程需要耐心等待,具体时间取决于主机的性能和网络速度。 最后,编译完成后,我们将生成的可执行文件拷贝到树莓派4B上,并安装所需的依赖库。通过相关命令启动程序,即可在树莓派4B上运行Qt 5.12.9和OpenGL应用程序。 总之,树莓派4B的交叉编译需要在性能强大的主机上进行,下载并配置好对应的交叉编译工具链,在主机上完成Qt 5.12.9和OpenGL的编译,然后将生成的可执行文件拷贝到树莓派4B上即可运行。这样可以满足树莓派4B的高性能需求,并享受到Qt和OpenGL的开发和应用的乐趣。 ### 回答3: 树莓派4B是一款强大的嵌入式系统开发板,我们可以通过交叉编译的方式在树莓派上安装和运行Qt5.12.9及其相关的OpenGL库。 首先,我们需要在PC机上准备好交叉编译环境。在电脑上安装好相应版本的Qt Creator,并下载好树莓派交叉编译工具链。 接下来,我们需要下载Qt5.12.9的源码,并进行配置和编译。在命令行中进入Qt源码根目录,执行以下命令: ``` ./configure -opengl es2 -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=xxx- ``` 其中,`xxx-`是你的交叉编译工具链的前缀,例如`arm-linux-gnueabihf-`。 配置完成后,执行`make -j4`命令进行编译。这里的`-j4`可以使用多线程加速编译过程,具体线程数量可以根据你的电脑配置进行调整。 编译完成后,可以将生成的Qt安装到树莓派的系统目录中。首先,将树莓派连接到电脑上,然后通过SSH登录到树莓派的终端。 在终端中执行以下命令: ``` make install ``` 这将会将编译好的Qt安装到树莓派的系统目录中。 接下来,我们需要安装OpenGL相关的库。在树莓派的终端中执行以下命令: ``` sudo apt-get install libgles2-mesa-dev ``` 这将会安装OpenGL ES 2.0 的开发包。 最后,我们可以在Qt Creator中新建一个项目,并将其部署到树莓派上进行运行调试。在Qt Creator的编译选项中,选择交叉编译工具链,并设置好Qt的安装路径以及树莓派的IP地址。 配置完成后,点击我点击“运行”即可开始在树莓派上运行Qt应用程序,并享受Qt5.12.9的强大功能以及OpenGL的优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值