环境配置:Ubuntu-16.04 |
1) 下载源码
在官方网站:http://download.qt.io/archive/qt/5.12/5.12.5/single/上下载qt-everywhere-src-5.12.5.tar.xz
2) 解压
xz -d qt-everywhere-src-5.12.5.tar.xz
tar -xvf qt-everywhere-src-5.12.5.tar
3) 安装依赖
- 安装flex词法分析器和bison语法分析器
sudo apt-get install flex
sudo apt-get install bison
- 安装gperf哈希函数生成器
sudo apt-get install gperf
安装libxcb*,[参考]
sudo apt-get install libxcb*
sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libegl1-mesa-dev
sudo apt-get install freeglut3-dev
- 安装llvm(如果不用QDoc则不需要安装。强烈不建议安装,费时费力费空间)
4) 执行configure
强烈不建议在Qt源码的目录下直接进行编译,那样会污染源码所在目录。建议在Qt源码所在的同级目录下,新建一个文件夹用来存放编译过程中产生的临时文件。
一定要注意源码路径不能含有中文!
$ mkdir qt-5.12.5-build
进入qt-5.12.5-build
文件夹执行configure
。-release
是选择模式,-prefix /opt/qt-5.12.5
指定编译之后库文件的安装位置为/opt/qt-5.12.5-install
(完整路径是/home/username/opt/qt-5.12.5-install
,一般源码包都会安装到系统opt
目录下)。安装位置可自行更改。
$ cd qt-5.12.5-build
//安装到系统opt目录下
~/qt-5.12.5-build$ ./../qt-everywhere-src-5.12.5/configure -release -prefix /opt/qt-5.12.5
//安装到源码同级目录下
~/qt-5.12.5-build$ ./../qt-everywhere-src-5.12.5/configure -release -prefix ../qt-5.12.5
提示选择版本,输入o
,回车
询问是否接受协议,输入y
,回车
configure
过程结束:
如果configure
的结果出现:
WARNING | solutions |
---|---|
Could not find qmake spec " . | 检查源码路径是否包含中文 |
WARNING: gperf is required to build QWebEngine. | sudo apt-get install gperf |
WARNING: flex is required to build QWebEngine. | sudo apt-get install flex |
WARNING: bison is required to build QWebEngine. | sudo apt-get install bison |
WARNING: QDoc will not be compiled. | install llvm |
ERROR: The OpenGL functionality tests failed! | install OpenGL |
NOTE: No wayland-egl support detected. Cross-toolkit compatibility disabled. | sudo apt-get install libegl1-mesa-dev |
安装好对应依赖库后,需要进入qt-5.12.5-build
文件夹执行rm config.cache
以删除之前缓存的配置,然后再次执行configure
。
5) 执行make
这一过程大约需要半小时到4个小时不等。
~/qt-5.12.5-build$ make
6) 执行make install
命令前加上sudo
保证安装文件夹不存在时自动创建。大概几分钟完成。
~/qt-5.12.5-build$ sudo make install
7) 修改环境变量
在终端输入:
sudo gedit ~/.profile(or .bashrc)
在打开的文件末尾加上下面的内容(/opt/qt-5.12.5-install
是指定的库文件安装位置),保存修改并重启虚拟机。
export QTDIR=/opt/qt-5.12.5-install
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
在终端输入qmake -v
,出现如下信息,说明qt源码编译并安装成功。
8) 新建test.cpp
#include<QApplication>
#include<QWidget>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QWidget* pWidget = new QWidget;
pWidget->setFixedSize(400, 300);
pWidget->show();
return app.exec();
}
9) 测试
# 通过命令生成的pro文件,里面会缺少引用,最好还是通过QtCreator生成
$ qmake -project
$ qmake test.pro
打开生成的test.pro
文件,加入QT += widgets
$ make
$ ./test