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

本文详细介绍了如何在树莓派3B上配置Qt5.12.4环境,包括更新固件、源码编译、交叉编译工具链设置、Qt源码编译与安装,以及PC端的准备工作,适用于进行嵌入式开发的开发者。

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

树莓派3B+Qt5.12.4

这边为树莓派3B 使用的QT源码和IDE版本均为QT5.12.4

【树莓派】准备工作:

  1. 树莓派默认账号是 username: pi, password: raspberry
  2. 树莓派更新固件和驱动:

sudo rpi-update(基本上不成功,具体更新操作可以看这篇,要下载的话最好早上下载,速度会比较快

sudo reboot

  1. 更新程序并安装必要的文件:

1)、首先修改 /etc/apt/sources.list 文件 (注意要用管理员权限), 去掉 deb-src 所在这 一行头部的 # 号,解开注释(注意:其他源不要修改,不要使用国内镜像源,不然 下面2的操作会失败的)

2)、更新必要的库:

sudo apt-get update

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 libfontconfig1-dev libdbus-1-dev libfreetype6-dev libicu-dev libinput-dev libxkbcommon-dev libsqlite3-dev libssl-dev libpng-dev libjpeg-dev libglib2.0-dev libraspberrypi-dev libpq-dev libmariadbclient-dev bluez libbluetooth-dev build-essential

  1. 、新建文件夹:

sudo mkdir /usr/local/Qt5.12.4

sudo chown pi:pi /usr/local/Qt5.12.4

4)、编译好的可执行文件会放在树莓派的/opt目录下,但默认的pi用户没有创建文件夹或文件的权限,需要在根目录执行:sudo chmod -R 777 /opt

远程调试时需要安装gdbserver:sudo apt-get install gdbserver

【PC】准备工作:

1、在电脑上创建工作文件夹。

mkdir ~/raspi

cd ~/raspi

  1. linaro上下载交叉编译工具链,包括gccruntimesysroot三项

下载后解压并合并(把三个解压出来的文件夹放在一个目录下),放在~/raspi/cross-compile-tool/目录下

如果电脑上没有C/C++编译环境,执行:

sudo apt-get install build-essential

使64位系统兼容32位的库:

sudo apt install lib32ncurses5 lib32z1

 

echo 'export PATH=$PATH:~/raspi/cross-compile-tool/' | sudo tee -a /etc/profile

echo 'export PATH=$PATH:~/raspi/cross-compile-tool/bin' | sudo tee -a /etc/profile

# echo后面一定要用单引号

source /etc/profile

3、创建和配置sysroot

​ 其实就是把树莓派上的库都弄到PC上来,形成一个和树莓派一样的环境,这样我们交叉编译的时候就可以链接到里面的库和头文件了。

执行以下命令把库和头文件拷贝到PC上:

cd ~/raspi

rsync -avz pi@your rpi IP address:/lib sysroot

rsync -avz pi@your rpi IP address:/usr/include sysroot/usr

rsync -avz pi@your rpi IP address:/usr/lib sysroot/usr

rsync -avz pi@your rpi IP address:/opt/vc sysroot/opt

# 记得改成你的树莓派的ip地址

树莓派地址的查看可以利用ifconfig

然后需要修改sysroot里面的软链接,里面有很多软连接使用的都是绝对路径,那就会直接链接到你PC的/usr、/lib目录里面去,那肯定是错的,我们希望它们链接到sysroot里面对应的库。所以我们需要把绝对路径改成相对路径。直接用网上现成的python脚本完成。

cd ~/raspi

wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py

chmod +x sysroot-relativelinks.py

./sysroot-relativelinks.py sysroot

4、(1) 下载Qt

下载并解压Qt 5.12.4,当然其他版本也可以。

wget http://download.qt.io/official_releases/qt/5.12/5.12.4/single/qt-everywhere-src-5.12.4.tar.xz

tar xvf  qt-everywhere-src-5.12.4.tar.xz

cd  qt-everywhere-src-5.12.4

  1. 配置Qt (貌似不用修改也可以编译成功)

编辑./qtbase/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf文件:

    ① 分别将所有的-lEGL替换成-lbrcmEGL,-LGLESv2替换成-lbrcmGLESv2。

    ② 修正文件中的4处错误,修正后如下:

VC_LIBRARY_PATH         = $$[QT_SYSROOT]/opt/vc/lib

VC_INCLUDE_PATH         = $$[QT_SYSROOT]/opt/vc/include

VC_LINK_LINE            = -L$${VC_LIBRARY_PATH}

QMAKE_LIBDIR_OPENGL_ES2 = $${VC_LIBRARY_PATH}

  1. 配置编译选项

./configure -release -opengl es2 -device linux-rasp-pi3-g++ -device-option CROSS_COMPILE=~/raspi/cross-compile-tool/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -skip qtwayland -skip qtlocation -skip qtscript -make libs -prefix /usr/local/Qt5.12.4 -extprefix ~/raspi/Qt5.12.4 -hostprefix ~/raspi/Qt5.12.4-host -no-use-gold-linker -v -no-gbm

make

make install

rsync -avz Qt5.12.4 pi@raspberrypi_ip:/usr/local 同步到树莓派

编译需要的时间看电脑配置,一般1~2个小时

  1. 编译quick、quick control、qtcharts

由于qtquick2依赖于qtquick,而quick属于qtdeclarative,所以先编译qtdeclarative
cd ~/raspi/qt-everywhere-src-5.14.2/qtdeclarative
用刚刚编译出来的qmake工具来配置
这个qmake的作用是沿用前面qtbase交叉编译时的配置
~/raspi/qt5pi-host/bin/qmake
make
make -j4 && make install
然后再编译我们要的quickcontrols2,步骤一样
cd ~/raspi/qt-everywhere-src-5.14.2/qtquickcontrols2
~/raspi/qt5pi-host/bin/qmake
make -j4 && make install

Qtcharts还要编译一下src下面的代码

cd ~/raspi/qt-everywhere-src-5.14.2/qtcharts
~/raspi/qt5pi-host/bin/qmake
make -j4 && make install

cd ~/raspi/qt-everywhere-src-5.14.2/qtcharts/src
~/raspi/qt5pi-host/bin/qmake
make -j4 && make install

rsync -avz Qt5.12.4 pi@raspberrypi_ip:/usr/local 同步到树莓派

后面配置后编译器,用交叉编译环境编译好的程序,也是通过这个操作同步到树莓派上,直接就可以运行了,因为库的路径是一样的

5、配置编译器 (略)

6、复制字体库

安装中文字体库:

sudo apt-get install ttf-wqy-zenhei

复制中文字体库:将/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc 复制到 /usr/local/qt5pi/lib/fonts。

复制英文字体库:将/usr/share/fonts/truetype/dejavu 中的文件复制到 /usr/local/qt5pi/lib/fonts。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值