前言:本文将介绍Qt5源码方式的编译及安装
注:实验版本是Qt-5.12。
下载源码包:qt-everywhere-src-5.12.8.tar.xz
下载地址:Index of /
依次选择:
【official_releases】 =>【qt】 =>【5.12】 =>【5.12.8】 =>【single】 =>【qt-everywhere-src-5.12.8.tar.xz】
下载完成请按以下步骤进行:
1. 安装依赖库
安装命令:
$ sudo apt-get install libx11-dev libxext-dev libxtst-dev
$ sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev
$ sudo apt-get install libxkbcommon-x11-dev
2. 解压
将压缩包放到Ubuntu某目录,并进入解压:
$ xz -d qt-everywhere-src-5.12.8.tar.xz
初步解压出:qt-everywhere-src-5.12.8.tar
$ tar xf qt-everywhere-src-5.12.8.tar
最终得到:qt-everywhere-src-5.12.8
进入目录:
$ cd qt-everywhere-src-5.12.8
3. 阅读说明README
养成良好习惯,对于一个陌生的开源库或其他工具,首先要看说明README。
官方指导,最为权威。打开README,里面会教你” HOW TO BUILD QT5”,请先仔细阅读。
还有官方线上文档for linux:https://doc.qt.io/qt-5/linux.html
4. 配置编译选项
$ ./configure --help //配置选项说明
参考READ及help,配置如下:
$ ./configure -opensource -release -confirm-license -qt-xcb -nomake tests -nomake examples
也可用-prefix指定库的安装路径,若不指定则默认/usr/local下
配置完成输出:
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into '/usr/local/Qt-5.12.8'.以上信息告诉你:执行make和make install进行编译及安装在'/usr/local/Qt-5.12.8'
备注:
此步可能出现以下错误:
错误:ERROR:Feature 'xcb' was enabled, but the pre-condition ' features.thread && features.xkbcommon &.& libs.xcb'failed
解决方法: $ sudo apt-get install libxkbcommon-x11-dev
5. 编译
$ make //或多线程加速编译:$ make -j4
过程漫长。。。
Ubuntu20出现错误:
Info: creating cache file /data/libs-3rd/qt-everywhere-src-5.12.8/qtdeclarative/.qmake.cache
sh: 1: python: not found
Project ERROR: Building QtQml requires Python.
make: *** [Makefile:337: module-qtdeclarative-make_first] Error 3原因:
python 可能被 python2 或者 python 3 代替了导致映射不到。
通过以下命令查看确实没有python
$ ls /usr/bin/python*

解决:
没有则创建,执行以下命令创建软链接:
$ ln -s /usr/bin/python3 /usr/bin/python
再次查看就有了:

6. 安装
$ sudo make install
安装完成,可见:
$ ls /usr/local/Qt-5.12.8/
输出目录:
bin doc include lib mkspecs phrasebooks plugins qml translations7. 配置环境变量
一般情况,新安装的库都需为其配置环境,以便编译器能顺利找到它。
编译/etc/profile配置文件
$ sudo vi /etc/profile
在文末加入以下内容:(配置QT库的路径到环境变量中)
# Qt5
export QTDIR=/usr/local/Qt-5.12.8
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH编译完成,再运行命令使其生效:
$ source /etc/profile
验证是否设置成功:
$ qmake -v
可见有版本信息输出:
QMake version 3.1
Using Qt version 5.12.8 in /usr/local/Qt-5.12.8/lib配置成功!
8. 创建第一个hello工程
在某目录下编译cpp源文件:
$ vi hello.cpp
输入以下代码:

9. 如何编译第一个工程
依次执行以下命令:
$ qmake -project //创建qt.pro文件
$ qmake //生成Makefile
$ make //编译,生成可执行文件

没找到文件!
原因:由于Qt5将大部分桌面部件移到了Qt Widgets模块中,即QApplication已经从原来的<QtGui/QApplication>移动到<QtWidgets/QApplication>了。
解决:修改.pro文件:在xxx.pro文件最后加上一行:
greaterThan(QT_MAJOR_VERSION,4): QT += widgets
即:QT版本>4的,QLabel等部件都放在widgets模块下了
修改后再make即可编过
运行:
$ ./hello

可见,弹出了个小框,成功显示“Hello Qt”
到此,QT库安装完成。