因为树莓派编译比较慢,然后就再PC上进行编译,然后使用PC进行编译,树莓派仅运行。
QT的编译主要参考了https://blog.csdn.net/lixiaoxin1989/article/details/90030624的博客。
还有个官网教程 https://wiki.qt.io/RaspberryPi2EGLFS#Step_by_step也可以看看,比博客详细点。
写入树莓派,刷卡+写img。我的是2021-05-07-raspios-buster-armhf-full.img。
树莓派安装后先进行了换源,坑(换源要看版本的,stretch,buster)
换源之后我执行了 ,这里看情况吧,那个upgrade看情况吧,挺费时的。
sudo apt-get update sudo apt-get upgrade
还装了个汉语包。
sudo apt-get install ttf-wqy-zenhei
并且开启了我的SSH,我是通过可视化界面配置的。
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
接下来我就按照博客的安装了这几个库,然后在安装libqt5gui5时,有提示我error,然后我就执行了适应安装。
就是使用
sudo apt-get install aptitude sudo aptitude install libqt5gui5
接下来乖乖执行
sudo mkdir /usr/local/Qt5.12.4 sudo chown pi:pi /usr/local/Qt5.12.4 sudo chmod -R 777 /opt sudo apt-get install gdbserver
关于那个Qt5.12.4,可以改哦。但是要记住。
然后是分辨率设置,不设置的话,后面编译会报错的。我之前偷懒没搞。我记得会导致我运行的QT程序占满我的树莓派屏幕。总之很不爽。还是设置一下。
#这里随便用什么打开都行。 sudo leafpad ~/.profile #在这个文件最后添加 export QT_QPA_EGLFS_PHYSICAL_WIDTH=1920 export QT_QPA_EGLFS_PHYSICAL_HEIGHT=1080 #最后执行 source .profile
接下来转PC上。我的版本。ubuntu-18.04.5-desktop-amd64.iso
我用的是虚拟机。然后因为要编译源码。建议硬盘稍微大一点。当然我80G过分了。
然后https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/
在这个网站上下载这三个压缩包,坑(我也是第一次接触交叉编译,我先下了2019的包发现是个64位的,其实文件名写了不是吗。别下这个包runtime-gcc-linaro-7.5.0-2019.12-aarch64-linux)
三个包解压后,把压缩包里面的内容放在raspi里面的cross-compile-tool里面。
然后乖乖执行两个安装。
sudo apt-get install build-essential sudo apt install lib32ncurses5 lib32z1 接下来要准备拷贝PI的内容啦,IP地址是树莓派的局域网地址 mkdir sysroot sysroot/usr sysroot/opt rsync -avz pi@192.168.0.10:/lib sysroot rsync -avz pi@192.168.0.10:/usr/include sysroot/usr rsync -avz pi@192.168.0.10:/usr/lib sysroot/usr rsync -avz pi@192.168.0.10:/opt/vc sysroot/opt
这里我是拷贝第三个lib时耗时比较多,其它还好
然后乖乖执行,看清楚目录哦 wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py chmod +x sysroot-relativelinks.py ./sysroot-relativelinks.py sysroot
接下来,下载QT代码咯(确实可以早点下载,无所谓)。
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
然后修改一个文件的笔误:./qtbase/mkspecs/devices/linux-rasp-pi3-g++/qmake.conf
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}
一共四处。然后这里我没有按照教程去对-lEGL和-LGLESv2进行修改。(我只是记录我成功的操作,并没有明白为什么要改)
接下来,如果没问题了。配置QT,(这里有好几个目录路径,需要仔细看看。文件的结构目录也建议和我的一样,因为我之前放在别的文件夹下,make的时候出现了错误,emmm,那个错误没有搜到原因,是一个关于宏定义的。)
./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 #我好像40分钟左右make make sudo make install
如果make install成功了。那恭喜你了,基本上完成了。
接下来,把QT放到pi上去。
rsync -avz Qt5.12.4 pi@192.168.0.10:/usr/local
齐活儿。后面的没啥难度。
后面的话,
sudo apt-get install qt-creator
然后配置QTkits
Device type: Generic Linux Device
Device: Raspberry Pi (defaut for Generic Linux) 就是去选择你的Raspi
Sysroot: ~/raspi/sysroot 这里就是拷贝了树莓派库的地方
Compiler C: GCC (Raspberry Pi) 这是下载的交叉编译器GCC
Compiler C++: GCC (Raspberry Pi) 这是下载的交叉编译器G++
Debugger: GDB (Raspberry Pi) 这是下载的交叉编译器GDB
Qt version: Qt 5.12.4 (Raspberry Pi) 这里选择QT5.12.4-host/bin/qmake
然后用一个VNC观察自己的程序 https://www.realvnc.com/en/connect/download/viewer/linux/
在Qt Creator的Project - Run - Run - Command line argumens中增加-platform vnc,然后用VNC Viewer连接即可。注意要先在Qt Creator中启动调试,再用VNC Viewer连接。
killall (项目名称) || true
-platform vnc
最后搞一下字体。不搞的话会导致程序的文字显示不出来。
复制中文字体库:将/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc 复制到 /usr/local/qt5pi/lib/fonts。
复制英文字体库:将/usr/share/fonts/truetype/dejavu 中的文件复制到 /usr/local/qt5pi/lib/fonts
以上是
交叉编译直接按照https://blog.csdn.net/tajon1226/article/details/100606316的教程。
sudo apt-get install cmake
sudo cmake-gui
首先准备源码,然后源码解压缩后在里面创建了一个release目录。
然后
没有找到笔者所说的MAKE_BUILD_TYPE,和MAKE_INSTALL_PREFIX,可能与版本有关。
只告诉我会安装到这。
然后Configure并且Generate。
接着到release目录下。打开CmakeCache.txt,进行修改。
找到CMAKE_EXE_LINKER_FLAGS:STRING= , 加上-pthread -ldl -lrt
CMAKE_EXE_LINKER_FLAGS:STRING=-pthread -ldl -lrt
然后reload_cache.
重新Configure和Generate。
然后去release目录下,make ,sodo make install。
安装后,发现多了这些库,拷贝到树莓派的usr/lib中。
接下来,愉快的写代码吧。配环境好烦啊。