Linux QT交叉编译树莓派4的可执行程序

本文主要实现在Linux QT上编译树莓派4的可执行程序。可对树莓派上的程序进行编译调试,解决了树莓派上编译调试不便的问题。

一、前期准备
1.VMPlayer虚拟机安装Ubuntu16.04.6的操作系统
2.树莓派4安装2020-02-13-raspbian-buster操作系统

二、【On Rpi4】
第一步:

sudo nano /etc/apt/sources.list

将deb-src的注释删掉,保存更新后安装需要的文件包

sudo apt-get update
sudo apt-get build-dep qt4-x11
sudo apt-get build-dep qtbase-opensource-src
sudo apt-get install libegl1-mesa libegl1-mesa-dev libgles2-mesa libgles2-mesa-dev

以下操作可选

sudo apt-get install wiringpi libnfc-bin libnfc-dev fonts-texgyre libts-dev

如果需要使用到QtMultimedia可选

sudo apt-get install libbluetooth-dev bluez-tools gstreamer1.0-plugins* libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libopenal-data libsndio7.0 libopenal1 libopenal-dev pulseaudio

第二步:
将用户pi添加到render组

sudo gpasswd -a pi render

第三步:
设置创建目标文件夹,之后Linux主机生成库将放在这里

sudo mkdir /usr/local/qt5pi
sudo chown pi:pi /usr/local/qt5pi

三、【On Linux】
第一步:创建工作目录

mkdir ~/raspi
cd ~/raspi
git clone https://github.com/raspberrypi/tools

第二步:创建同步目录,同步编译时用到的树莓派上的库。此处需要树莓派开启ssh服务,之后的文件同步也在这个目录

mkdir sysroot sysroot/usr
rsync -avz pi@yourpi:/lib sysroot
rsync -avz pi@yourpi:/usr/include sysroot/usr
rsync -avz pi@yourpi:/usr/lib sysroot/usr

第三步:获取脚本,对文件进行链接

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

第四步:下载Qt源文件

git clone git://code.qt.io/qt/qtbase.git -b 5.12.6
cd qtbase

第五步:对第四步的源文件进行编译构造安装

./configure -release -opengl es2 -device linux-rasp-pi3-vc4-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 -make libs -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -no-use-gold-linker -v
make -j4
make install

第六步:将编译好的Qt文件同步到树莓派上,只需要同步~/raspi/qt5pi

rsync -avz qt5pi pi@yourpi:/usr/local

三、【On Rpi4】
更新树莓派,使它运行可执行文件时可以找到编译好的lib库

echo /usr/local/qt5pi/lib | sudo tee /etc/ld.so.conf.d/qt5pi.conf
sudo ldconfig

四、【On Linux】
第一步:安装Qt编辑器

sudo apt-get install qtcreator

第二步:打开Qt Creator选择工具–>选项–>设备–>添加–>通用Linux设备
Linux QT交叉编译树莓派4的可执行程序_第1张图片
第三步:填写树莓派的IP地址、用户名和密码
Linux QT交叉编译树莓派4的可执行程序_第2张图片
完成设备添加,点击右边Test按钮测试能否成功连接树莓派
Linux QT交叉编译树莓派4的可执行程序_第3张图片
第四步:选择构建和运行,添加编译器,设置名称和编译器路径

GCC C的路径:~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/bin/gcc

GCC C++ 的路径: ~/raspi/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-gdb
Linux QT交叉编译树莓派4的可执行程序_第4张图片
第五步:选择Qt Versions
添加qmake路径
Linux QT交叉编译树莓派4的可执行程序_第5张图片
第六步:选择Debuggers
Path:~/raspi/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-gdb
Linux QT交叉编译树莓派4的可执行程序_第6张图片
第七步:选择构建套件
设置名称、设备类型、Sysroot、编译器、调试器、Qt版本
Linux QT交叉编译树莓派4的可执行程序_第7张图片
五、测试
至此,全部配置完成,在Linux上打开Qt Creator选择配置好的套件
Linux QT交叉编译树莓派4的可执行程序_第8张图片
写一段简单的程序,在.pro文件最后加上`

target.path = /home/pi
INSTALLS += target

点击编译运行,就可以在树莓派/home/pi的位置看到可执行文件了

六、参考
1.http://wapel.de/?p=641
2.https://mechatronicsblog.com/cross-compile-and-deploy-qt-5-12-for-raspberry-pi/
3.https://medium.com/@amirmann/how-to-cross-compile-qt-for-raspberry-pi-3-on-linux-ubuntu-for-beginners-75acf2a078c
4.https://wiki.qt.io/Raspberry_Pi_Beginners_Guide

你可能感兴趣的:(Linux QT交叉编译树莓派4的可执行程序)