如果直接在树莓派上编写程序,并编译,会非常卡非常慢。因此,选在在自己笔记本上进行编译,然后部署到树莓派上。这就要对QT进行交叉编译。
树莓派3系统:Ubuntu mate (ubuntu 16.04.2)
笔记本:ubuntu 16.04
QT5
Qt版本:5.10.1
参考博客:
Qt交叉编译:https://wiki.qt.io/RaspberryPi2EGLFS
Qt Creator设置:
适用于树莓派Raspberry Pi的嵌入式QT平台(二) -- 在Windows下用Qt Creator开发编译Raspberry Qt 5应用程序
虽然是windows平台,但是设置方法是一样的。
编译过程:
前期的各种准备见第一篇博客。
这里在qt官网下载qt源码。配置好后,进入qt-everywhere-src-5.10.1根目录:
sh configure -opengl es2 -device linux-rasp-pi3-g++ -device-option CROSS_COMPILE=arm-linux-gnueabihf- -sysroot /home/wk/Raspberry/qt5pi/sysroot -prefix /usr/local/qt5pi -opensource -confirm-license -skip qtwebengine -skip qtscript -nomake examples -make libs -v
注意:在网上查到很多的博客中,都是说在qt-everywhere-src-5.10.1/qtbase下面执行编译指令,经过测试,会有各种问题。后来发现,直接而在根目录下面就可以了。
QT执行程序中遇到的一些问题:
问题一:报错:“Cannot run: No command given”
参考博客:
步骤一:在树莓派上安装SFTP
然后修改书没拍系统中的文件爱你/etc/ssh/sshd_config
其中一句修改为:Subsystem sftp /usr/lib/openssh/sftp-server
参考博客:Qt Creator Deploy to Remote Linux Target
目前编译运行不带界面的程序是没有问题的。带界面,即与QT库相关的都会报错,EGL库各种问题。。。
CLion:
qt5交叉编译,各种EGL库相关的问题,头大。。。暂时放弃了。毕竟也不是很需要qt的界面库,转用CLion
错误:
运行报错:
cannot execute binary file: Exec format error
参考bash: ./program: cannot execute binary file: Exec format error
执行:sudo apt install binfmt-support qemu qemu-user-static
运行报错:/lib/ld-linux-armhf.so.3: No such file or directory
将所使用的工具链的中的ld-linux-armhf.so.3链接到/lib/ld-linux-armhf.so.3:
报错:
./untitled1: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory