前言
Hi,大家好,我是IAMLIUBO,一个热爱开源硬件的Geek,最近在树莓派上做一些Qt开发相关的内容,本文简单记录一下如何在树莓派上编译最新的Qt 5.14.2(2020-04-30),也是在少数派发布的第一篇文章,希望大家会喜欢,后面会尝试在少数派发布更多好玩的关于开源硬件的文章或者视频~
硬件要求
- 树莓派(我这里使用的是树莓派4B 1GB版本,够用,但是条件如果允许,建议大家考虑2GB版本或更高)
- 内存卡(16GB及以上)
下载源码
由于5.14版本并不能直接使用apt-get方式去安装,所以我们需要从源码安装,当然这一过程还是非常耗时的(请做好心理准备…),使用apt-get方式安装的Qt版本大约在5.11上,可以看出还是有几个版本的距离,那么废话少说,我们先将源码下载下来:
Qt 5.14.2 源码下载:下载链接
我们既然要安装最新的Qt版本,那么一并也将最新版本的Qt Creator安装了吧,编译过程同样相当耗时。
Qt Creator 源码下载:下载链接
编译Qt 5.14.2
我们这里需要先编译Qt 5.14.2,然后再编译Qt Creator,因为Qt Creator其实是用Qt写的,所以只有我们把Qt编译好了,才可以去编译Qt Creator。
交换空间增大
~ $ sudo nano /etc/dphys-swapfile
将CON_SWAPSIZE=100修改为CON_SWAPSIZE=1024
然后执行下面的命令:
~ $ sudo /etc/init.d/dphys-swapfile stop~ $ sudo /etc/init.d/dphys-swapfile start
安装依赖
~ $ 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 libclipper-dev
解压源码
~ $ tar -xvf qt-everywhere-src-5.14.2.tar.xz
新建文件夹用来编译(影子编译)
~ $ mkdir build
~ $ cd build
配置编译选项
build $ PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig \
../qt-everywhere-src-5.14.2/configure -platform linux-rpi4-v3d-g++ \
-v \
-opengl es2 -eglfs \
-no-gtk \
-opensource -confirm-license -release \
-reduce-exports \
-force-pkg-config \
-nomake examples -no-compile-examples \
-skip qtwayland \
-skip qtwebengine \
-no-feature-geoservices_mapboxgl \
-qt-pcre \
-no-pch \
-ssl \
-evdev \
-system-freetype \
-fontconfig \
-glib \
-prefix /opt/Qt5.14 \
-qpa eglfs \
-qt-xcb
这里的编译选项大家先不用理解,跟上面保持一致即可。
编译
配置完成后,我们就可以开始编译了,这里强烈建议将树莓派放到不碍事的地方,因为编译非常耗时,中断会浪费很多时间,然后最好可以配一个散热风扇,实测不加散热风扇并启用多核编译的话CPU温度最高能达到60摄氏度。
build $ make #没有散热风扇,不启用多核编译 build $ make -j4 #有散热风扇可以考虑使用这条命令不过先不要着急,我在实际测试的时候还需要单独编译三个模块,不然后面安装会报错
build $ cd qtlocation/src/3rdparty/clip2tri clip2tri $ sudo make
clip2tri $ cd qtlocation/src/3rdparty/clipper
clipper $ sudo make
clipper $ cd qtlocation/src/3rdparty/poly2tri
poly2tri $ sudo make
poly2tri $ cd ~/build
这里具体为什么需要单独编译,我也不是很清楚,可能是前面配置的问题,但是可配置选项非常多,我也没有太仔细的研究,大家感兴趣的可以看一下。
安装
安装就相对简单了,我们只需要执行下面的命令即可,不过时间也稍微长一点,大家耐心等候即可:
build $ sudo make install
安装完成后我们测试下qmake是否可用:
build $ /opt/Qt5.14/bin/qmake -v
如果没有错误的话就应该可以看见跟下面一样的输出了:
QMake version 3.1 Using Qt version 5.14.2 in /opt/Qt5.14/lib
将Qt 5.14.2 设置为默认的Qt 版本
build $ sudo nano /usr/share/qtchooser/qt5.14-compile-byself.conf
将下面两行代码保存到文件中:
/opt/Qt5.14/bin /opt/Qt5.14/lib
然后修改下.bashrc文件
build $ nano ~/.bashrc在文件的最后增加下面一行内容:
export QT_SELECT=qt5.14-compile-byself最后我们使设置生效:
build $ source ~/.bashrc然后我们再测试一下,直接测试qmake,不带路径,看看能不能够正确输出:
build $ qmake -v如果可以正确输出Qt版本,恭喜你,到这一步就完成了!
编译Qt Creator 4.12
我们再前面已经成功将Qt编译好了,那么接下来我们编译一下Qt Creator,可能有人不晓得这是什么,简单来说这是一个Qt的IDE,功能非常强大,开发Qt必备之良药,当然项目本身就是Qt编写的,大家通过这个工具也能够从侧面看出Qt的强大了,那么废话少说,我们开始编译吧!
解压源码
~ $ tar -xvf qt-creator-opensource-src-4.12.0.tar.xz
新建文件夹用来编译(影子编译)
~ $ mkdir qtcreator-build
~ $ cd qtcreator-build
编译
编译倒是没那么复杂,不过也是一个非常耗时的过程,大约得五六个小时左右…
依次执行下面的命令即可:
qtcreator-build $ qmake -r ../qt-creator-opensource-src-4.12.0 qtcreator-build $ make -j4 #如果树莓派没有任何散热方式,不建议追加 -j4接下来就是漫长的等待,只要你上面Qt编译没错并安装成功后,这里基本不会有问题,你需要的只有等待一下。
安装
qtcreator-build $ make install
安装完成后有点小Bug,就是我们没法在快捷启动里找到Qt Creator,不过没关系,我们只需要复制一个文件就可以了。
qtcreator-build $ sudo cp /share/applications/org.qt-project.qtcreator.desktop /usr/share/applications/我猜测是快捷启动没有索引这个目录,不过没仔细研究,我们复制到那个文件下就可以从快捷启动中使用了。
测试
到上一步,我们就已经将Qt和Qt Creator都安装好了,我们这里编译一个官方例程来测试一下!
~ $ cp qt-everywhere-src-5.14.2/qtbase/examples/opengl/2dpainting/ ./ -r然后我们用Qt Creator打开工程,然后点击编译和运行按钮。
编译稍微有点慢,请耐心等候一会。
运行结果:

