ubuntu虚拟机为树莓派5交叉编译Qt5并实现远程开发

参照文章:

https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4

环境:

  • ubunt20虚拟机
  • 树莓派5,32位系统

树莓准备
假设已经安装好32位系统

换源

sudo vim /etc/apt/sources.list

deb https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bookworm main non-free contrib rpi
deb-src https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bookworm main non-free contrib rpi

配置你的树莓派

sudo visudo
#username 改成你自己的
<username> ALL=NOPASSWD:/usr/bin/rsync

#无脑安装依赖库
sudo apt-get build-dep qt5-qmake
sudo apt-get build-dep libqt5gui5
sudo apt-get build-dep libqt5webengine-data
sudo apt-get build-dep libqt5webkit5
sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 gdbserver

sudo apt-get install libboost1.58-all-dev libudev-dev libinput-dev libts-dev libmtdev-dev libjpeg-dev libfontconfig1-dev libssl-dev libdbus-1-dev libglib2.0-dev libxkbcommon-dev

sudo apt-get install libgles2-mesa-dev libgbm-dev

sudo apt install libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev libxkbcommon-x11-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev


#安装多媒体支持(可选)
sudo apt-get install gstreamer1.0-plugins*
sudo apt-get install libgstreamer1.0-dev  libgstreamer-plugins-base1.0-dev libopenal-data libsndio7.0 libopenal1 libopenal-dev pulseaudio
sudo apt-get install bluez-tools
sudo apt-get install libbluetooth-dev

#创建目录方便后续发送编译好的库
sudo mkdir /usr/local/qt5.15
sudo chown -R luka:luka /usr/local/qt5.15

虚拟机准备

#换源
sudo vim /etc/apt/source.list


#默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse


#无脑安装依赖
sudo apt-get update
sudo apt-get install gcc git bison python gperf pkg-config gdb-multiarch
sudo apt install build-essential

#预创建先会用到的目录
sudo mkdir ~/rpi
sudo mkdir ~/rpi/build
sudo mkdir ~/rpi/tools
sudo mkdir ~/rpi/sysroot
sudo mkdir ~/rpi/sysroot/usr
sudo mkdir ~/rpi/sysroot/opt
sudo chown -R 1000:1000 ~/rpi
cd ~/rpi

#下载Qt源码
sudo wget http://download.qt.io/archive/qt/5.15/5.15.0/single/qt-everywhere-src-5.15.0.tar.xz
#无脑解压源码
sudo tar xfv qt-everywhere-src-5.15.0.tar.xz 

#第一条复制,第二条替换,完成后检查一下是否符合预期
cp -R qt-everywhere-src-5.15.0/qtbase/mkspecs/linux-arm-gnueabi-g++ qt-everywhere-src-5.15.0/qtbase/mkspecs/linux-arm-gnueabihf-g++

sed -i -e 's/arm-linux-gnueabi-/arm-linux-gnueabihf-/g' qt-everywhere-src-5.15.0/qtbase/mkspecs/linux-arm-gnueabihf-g++/qmake.conf

#准备交叉编译器
cd ~/rpi/tools

#下的比较慢,建议用迅雷下好复制到虚拟机里
sudo wget https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz

#无脑解压
tar xfv gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz

#从树莓派拉文件
cd ~/rpi

#注意改成自己的用户名和ip
rsync -avz --rsync-path="sudo rsync" --delete luka@192.168.10.18:/lib sysroot
rsync -avz --rsync-path="sudo rsync" --delete luka@192.168.10.18:/usr/include sysroot/usr
rsync -avz --rsync-path="sudo rsync" --delete luka@192.168.10.18:/usr/lib sysroot/usr
rsync -avz --rsync-path="sudo rsync" --delete luka@192.168.10.18:/opt/vc sysroot/opt

#修复符号链接
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py

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

配置和编译

cd ~/rpi/build
../qt-everywhere-src-5.15.0/configure -release -opengl es2  -eglfs -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=~/rpi/tools/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot ~/rpi/sysroot -prefix /usr/local/qt5.15 -extprefix ~/rpi/qt5.15 -opensource -confirm-license -skip qtscript -skip qtwayland -skip qtwebengine -nomake tests -make libs -pkg-config -no-use-gold-linker -v -recheck

# 编译,比较慢,等,死等
make -j8

# 安装,有可能比较慢,等,死等
make install

发送编译好的库到树莓派

cd ~/rpi
rsync -avz --rsync-path="sudo rsync" qt5.15 luka@192.168.10.18:/usr/local

配置远程开发

#虚拟机上安装qtcreator
sudo apt install qtcreator

添加新设备
这个流程比较简单,跟着向导来就行
在这里插入图片描述

添加编译器
把之前下的交叉编译器都填进来就行
在这里插入图片描述

添加Qt版本,找到编译好的目录填入qmake的路径即可
在这里插入图片描述

添加新的kit
填入之前添加的编译器和qt版本
在这里插入图片描述
新建项目
随便新建一个项目
到这一步选择之前准别好设备和kit,这里都比较简单,跟着向导,配置ssh和密钥即可
在这里插入图片描述

重要!!!
在树莓派上配置环境变量

sudo vim /etc/profile
#最后追加
export QT_QPA_PLATFORM=xcb #这里必须要改,不然玩不了
export XDG_RUNTIME_DIR=/run/user/1000

配置树莓派的桌面默认使用x而非wayland
此处为巨坑,一定要做

sudo raspi-config

在这里插入图片描述
在这里插入图片描述
一定要选X11
一定要选X11
一定要选X11
在这里插入图片描述

这一步很重要,不然还是玩不了
在你的项目里添加一个环境变量DISPLAY
他的值需要你接上屏幕,然后打开一个终端,通过echo $DISPLAY获取,一般时:0或者是:1注意:冒号和数字是一体的
在这里插入图片描述
编译后运行,qt可能会报错,表示没有权限操作 /opt 目录
去树莓派的终端上chmod 777 /opt即可

禁止树莓派息屏

sudo vim /etc/lightdm/lightdm.conf
# 打开这段的注释并添加-s 0 -dpms
xserver-command=X -s 0 -dpms
sudo reboot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值