1.下载Qt源码
https://download.qt.io/archive/qt/5.15/5.15.2/single/
2.Qt源码编译
1.编译的前的基础了解
目标platforms(平台),编译静态库或者动态库,skip某个功能模块等选项
2.源码下载
两种方式:
1.直接下载,下载地址:http://download.qt.io/archive/qt/
2.git clone Qt源码,仓库地址:https://code.qt.io/qt/qt5.git。
推荐使用git克隆的方式,这样在编译生成目标库时,你可以通过git
清楚的了解到文件变化情况。
git clone步骤:
1.git clone
https://code.qt.io/qt/qt5.git。
2.cd qt5。
3.git checkout 版本。
4.git submodule update --init --recursive。
解压
xz -d qt-everywhere-src-5.15.2.tar.xz
tar -xvf qt-everywhere-src-5.15.2.tar
安装依赖
安装flex词法分析器和bison语法分析器
sudo apt-get install flex
sudo apt-get install bison
安装gperf哈希函数生成器
sudo apt-get install gperf
安装libxcb*,[参考]
sudo apt-get install libxcb*
安装OpenGL
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则不需要安装。强烈不建议安装,费时费力费空间)
执行configure
强烈不建议在Qt源码的目录下直接进行编译,那样会污染源码所在目录。建议在Qt
源码所在的同级目录下,新建一个文件夹用来存放编译过程中产生的临时文件。
一定要注意源码路径不能含有中文!
mkdir qt-5.15.2-build
进入qt-5.15.2-build文件夹执行configure。-release是选择模式
,-prefix /opt/qt-5.15.2指定编译之后库文件的安装位置为
/opt/qt-5.15.2-install(完整路径是
/home/username/opt/qt-5.15.2-install,
一般源码包都会安装到系统opt目录下)。安装位置可自行更改。
$ cd qt-5.15.2-build
//安装到系统opt目录下
~/qt-5.15.2-build$ ./../qt-everywhere-src-5.15.2/configure
-release -prefix /opt/qt-5.15.2
//安装到源码同级目录下
~/qt-5.15.2-build$ ./../qt-everywhere-src-5.15.2/configure
-release -prefix ../qt-5.15.2
提示选择版本,输入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 |
中间错误
If try -opengl then: All the OpenGL functionality tests failed!
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev
安装好对应依赖库后,需要进入qt-5.15.2-build文件夹执行rm config.cache以删除之前缓存的配置,然后再次执行configure。
执行make
这一过程大约需要半小时到4个小时不等。
执行make install
命令前加上sudo保证安装文件夹不存在时自动创建。大概几分钟完成。
修改环境变量
在终端输入:sudo gedit ~/.profile(or .bashrc)
在打开的文件末尾加上下面的内容(/opt/qt-5.15.2-install是指定的库文件安装位置),
保存修改并重启虚拟机。
export QTDIR=/opt/qt-5.15.2-install
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
在终端输入qmake -v,出现如下信息,说明qt源码编译并安装成功。
QMake version 3.1
3.配置编译选项
1.cd 下载的Qt源码目录
2.执行configure -prefix E:\QtSource\build -release -opensource -static -force-debug-info -opengl dynamic -platform win32-msvc -c++std c++11 -skip qtmultimedia -skip qtsensors -skip qtwebengine -skip qtgamepad -nomake examples -nomake tests -mp -skip qtlocation -skip qtserialbus -confirm-license命令配置编译选项
4.configure参数说明
-prefix 生成目标库的目录
-release 生成release版本 -debug 生成debug版本 -debug-and-release生成debug和release版本
-opensource 编译开源版 -commercial 编译商业版 (参数可选)
-static 生成静态库lib文件 -shared 生成动态库dll文件 (参数可选,默认是shared)/*** 注:静态库与动态库区别是在生成目标文件的链接方式上,静态库采用静态链接,在生成的目标文件(如.exe文件)中会包含库文件代码,而动态库在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入。***/
-force-debug-info 强制生成调试信息 (参数可选)/*** 这个参数是让Qt release版本也生成.pdb文件。这个文件有什么作用呢?它就是我们在release版本下设置了异常捕获信息函数,打印出错堆栈信息所必须的文件。如果程序没用开启异常捕获选项,是不需要开启这个参数的。***/
-opengl dynamic 指定opengl库 (参数可选) /*** 关于这个参数说明请参考doc.qt.io/qt-5/windows-requirements.html ***/
OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。
OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。
-platform win32-msvc 目标库运行平台
-skip 跳过该模块
-nomake 不编译该模块
-mp 启动多核编译
注:-skip和-nomake都可省略,但是-skip qtwebengine这个参数不能省略,qtwebengine模块有需要依赖的库,这里不跳过编译会失败。
5.make && make install
等待configure命名执行完成后,输入make开始编译,如果结果没有错误,输入make install等待结束,完成。