说明:最近在公司上找到一块树莓派4B的板子,写了个Python文件在上面跑,可能后面会写点有UI的东西,所以决定先把QT的环境搭建起来,去百度搜了一大圈,按照操作,最后在安装32库的时候总是失败。而且大部分文章到后面就讲得不是很详细了。对我这小白不太友好。后面再youtube上看到了个视频,有详细的操作过程。我把操作的具体流程复制了过来。希望可以有参考作用,有条件的也可以去搜一下那个视频。大致可以分成下面几步:
1、升级树莓派,再树莓派上安装有用到的库。我升级的时候提示我容量不足,最后没办法只能用本地升级,我看了一下,我安装的树莓派固件其实也挺新的了,不升级也可以。另外树莓派的源也要换成国内源先,不然要搞很久的。
2、安装交叉编译工具,视频里面说不用树莓派官方提供的工具包了,太大,而且过时了,去Linaro下载树莓派官方推荐的。
3、将树莓派上的一些文件同步回Ubuntu,修改一些链接的指向,后面配置Qt生成交叉编译的qmake会用到。
4、Qt源码的config和make和install。
5、安装Qtcreator,配置和测试。
一、树莓派上的操作
sudo vi /etc/apt/sources.list
取消注释
sudo apt update
sudo apt full-upgrade
sudo reboot
sudo rpi-update //提示容量不足,先本地升级吧,也很快。具体操作百度一下就有了
打开ssh功能 //树莓派怎么打开ssh,百度一下就有了
记录下repo 版本,下次可能会用到。cat boot/.frimware
用到的时候:sudo rpi-update xxxx 就可以恢复到这个版本。这里先不管。
确保这两个库存在
sudo reboot
sudo apt-get build-dep qt5-qmake
sudo apt-get build-dep libqt5webengine-data
sudo apt-get install libboost1.58-all-dev libudev-dev libinput-dev libts-dev libmtdev-dev libjpeg-dev libfontconfig1-dev
sudo apt-get install libssl-dev libdbus-1-dev libglib2.0-dev libxkbcommon-dev libegl1-mesa-dev libgbm-dev libgles2-mesa-dev mesa-common-dev
sudo apt-get install libasound2-dev libpulse-dev gstreamer1.0-omx libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-alsa
sudo apt-get install libvpx-dev libsrtp0-dev libsnappy-dev libnss3-dev
sudo apt-get install "^libxcb.*"
sudo apt-get install flex bison libxslt-dev ruby gperf libbz2-dev libcups2-dev libatkmm-1.6-dev libxi6 libxcomposite1
sudo apt-get install libfreetype6-dev libicu-dev libsqlite3-dev libxslt1-dev libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libgstreamer0.10-dev gstreamer-tools libraspberrypi-dev libx11-dev libglib2.0-dev
sudo apt-get install freetds-dev libsqlite0-dev libpq-dev libiodbc2-dev firebird-dev libjpeg9-dev libgst-dev libxext-dev libxcb1 libxcb1-dev libx11-xcb1
sudo apt-get install libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev
sudo apt-get install libxcb-sync1 libxcb-sync-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev
sudo apt-get install libxcb-glx0-dev libxi-dev libdrm-dev libssl-dev libxcb-xinerama0 libxcb-xinerama0-dev
sudo apt-get install libatspi-dev libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libfontconfig1-dev
sudo apt-get install libxss-dev libxtst-dev libpci-dev libcap-dev libsrtp0-dev libxrandr-dev libnss3-dev libdirectfb-dev libaudio-dev
sudo mkdir /usr/local/qt5pi
sudo chown pi:pi /usr/local/qt5pi
二、ubuntu上的操作
sudo apt-get update
sudo apt-get upgrade
ping 树莓派ip 192.168.2.125
sudo bash
apt-get install gcc git bison python gperf pkg-config
apt install make
apt install libclang-dev
apt install build-essential
mkdir /opt/qt5pi
chown ulas:ulas /opt/qt5pi
cd /opt/qt5pi/
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz //这里可以直接用迅雷下载,快很多,然后上传到ubuntu
tar xf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
export PATH=$PATH:/opt/qt5pi/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin
nano ~/.bashrc //这里用vi在最后面把导出环境变量加上
wget http://download.qt.io/official_releases/qt/5.14/5.14.2/single/qt-everywhere-src-5.14.2.tar.xz //我这里一开始下载了5.12那个版本,那个没有linux-rasp-pi4-v3d-g++这个东西,找了好久才知道是这个原因,最后按照教程重新下载5.14.2这个版本,才解决了这个问题。
tar xf qt-everywhere-src-5.14.2.tar.xz
cat qt-everywhere-src-5.14.2/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf //这个可以仔细来阅读一下
将树莓派上的文件同步回来:
ping 192.168.2.125 //树莓派的IP
rsync -avz pi@192.168.2.125:/lib sysroot
rsync -avz pi@192.168.2.125:/usr/include sysroot/usr
rsync -avz pi@192.168.2.125:/lib sysroot
rsync -avz pi@192.168.2.125:/usr/lib sysroot/usr
rsync -avz pi@192.168.2.125:/opt/vc sysroot/opt
ls sysroot/usr/lib/arm-linux-gnueabihf/libEGL.so.1.1.0
mv sysroot/usr/lib/arm-linux-gnueabihf/libEGL.so.1.1.0 sysroot/usr/lib/arm-linux-gnueabihf/libEGL.so.1.1.0_backup
ln -s sysroot/opt/vc/lib/libEGL.so sysroot/usr/lib/arm-linux-gnueabihf/libEGL.so.1.1.0
mv sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.1.0 sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.1.0_backup
ln -s sysroot/opt/vc/lib/libGLESv2.so sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.1.0
mv sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.1.0 sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.1.0_backup
ls sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.1.0
ln -s sysroot/opt/vc/lib/libGLESv2.so sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.1.0
ln -s sysroot/opt/vc/lib/libEGL.so sysroot/opt/vc/lib/libEGL.so.1
ln -s sysroot/opt/vc/lib/libGLESv2.so sysroot/opt/vc/lib/libGLESv2.so.2
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py //这个我是直接去搜这个py文件的内容,然后直接创建这个py文件把内容添加上去的。
chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot
重新检查一下:
rsync -avz pi@192.168.16.25:/lib sysroot //这也是树莓派的ip
rsync -avz pi@192.168.16.25:/usr/include sysroot/usr
rsync -avz pi@192.168.16.25:/usr/lib sysroot/usr
rsync -avz pi@192.168.16.25:/opt/vc sysroot/opt/
./sysroot-relativelinks.py sysroot
mkdir qt5build
cd qt5build/
../qt-everywhere-src-5.14.2/configure -opengl es2 -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=/opt/qt5pi/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /opt/qt5pi/sysroot -prefix /usr/local/qt5pi -opensource -confirm-license -skip qtscript -skip qtwayland -skip qtdatavis3d -nomake examples -make libs -pkg-config -no-use-gold-linker -v
如果说g++没找到,就先
apt install build-essential
make -j8
这一步我等了一个下午,花了4个小时吧,主要是忘记配置虚拟机,把多几个CPU的核心分配给虚拟机了,即使输入了j8,实际电脑CPU也没有多核在编译。这里还要先把虚拟机的内存分配大点,不然中间会提示错误,找不到g++什么的。
make install
ls /opt/qt5pi/sysroot/usr/local/qt5pi/bin/qmake //可以看到qmake出现了
将文件同步回树莓派:
cd /opt/qt5pi/
rsync -avz sysroot/usr/local/qt5pi pi@192.168.2.125:/usr/local
安装qt creator,配置:
apt-get install qtcreator
Lets create simple Hello world console application. With qt-creator choose new console application
Go to path where your pro file stays.
Call the qmake with command
/opt/qt5pi/sysroot/usr/local/qt5pi/bin/qmake
then hit enter after that you will see the Makefile . Check with the ls command
to create a executable binary just
make
As it seen with file untitled, it is for ARM not intel.
Send it to the raspberr pi with
scp untitled root@192.168.16.25:/home
Back to raspberry pi. Go to home. Then ./untitled
Hello World.
Tool->options
Compliers->Add->GCC->C
添加编译器,ABI选择custom
Compliers->Add->GCC->C++
回到kits选择C和C++编译器和qt版本
devices->add
然后一直下一步,最后点右边的Test看看能不能连接。
之后可以编译创建一个release的工程,复制到树莓派上运行。
配置远程直接运行:
在Projects中配置RaspiQt的Run