前言

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打开工程,然后点击编译和运行按钮。
编译稍微有点慢,请耐心等候一会。
运行结果:

运行结果

恭喜你,到这里你已经成功在树莓派上安装好最新版本的Qt了。


0
0