环境配置: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*
  • 安装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则不需要安装。强烈不建议安装,费时费力费空间)

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

参考文章
  • Linux平台QT开发环境搭建
  • Ubuntu 14.04系统下安装和编译QT 5.9.2库(桌面版/ARM嵌入式IMX6版)
  • Qt源码编译configure配置参数

linux环境下编译Qt源码相关推荐

  1. linux环境下编译llvm源码

    环境配置:Ubuntu-16.04 1) 下载依赖 sudo apt-get install cmake sudo apt-get install xz-utils sudo apt-get inst ...

  2. Linux环境下Arm端源码编译OpenCV+ncnn目标检测模型实例运行调试完整实践记录

    今天需要在嵌入式设备端运行C的程序,里面有依赖OpenCV的部分,这就需要编译安装好OpenCV才行,这个对于我来说还是比较陌生的,我很少用C,所以这里面也没少折腾,一路上遇上了很多的报错,这里我将完 ...

  3. NDK实践(一)在linux环境下编译ffmpe

    系列文章目录: NDK实践(一)在linux环境下编译ffmpe NDK实践(二)将编译的ffmpeg静态库集成到Android工程 最近开始接触学习ndk开发,本着边学习边实践的原则,计划完成视频编 ...

  4. 从零开始,手把手教你如何在Ubuntu下编译VLC-Android源码

    前言 公司项目中使用的libvlcjni.so库文件,有点老,对Android 6.0+系统兼容性太差了,当程序运行在Android6.0+系统上时,回弹出警告框,提示libvlcjni.so:tex ...

  5. linux环境下编译部署php生产环境

    linux环境下编译部署php生产环境 版本控制 php:7.2.4 nginx:1.9.9 部分插件版本 xlswriter:1.3.3.2 redis:3.1.3 一.安装php 1.安装依赖(之 ...

  6. WINDOWS 下编译 ffmpeg 源码总结

    WINDOWS 下编译 ffmpeg 源码,有两种方式:VC.GCC 1.VC 编译:   https://github.com/ShiftMediaProject/FFVS-Project-Gene ...

  7. Win7下编译mosquitto源码

    在windows下编译mosquitto源码使用的工具包括: 1.visual studio 2010(用vs .net 2003的编译器时cmake会提示未识别的c或c++编译器) 2.cmake ...

  8. 在CentOS下编译VLC源码

    在CentOS下编译VLC源码 一.下载VLC源码 二.VLC编译与安装 1.编译与安装 2.库文件 3.头文件 三.报错解决 1.configure: error: Could not find l ...

  9. win7下编译python源码

    win7下编译python源码 下载源码: 打开网页:https://www.python.org/downloads/release/python-2710/ 下载完成后解压即可 查看文档: 其实最 ...

最新文章

  1. 为你分享10篇NLP、CV领域优质论文
  2. Rails字符集问题
  3. 3D模型初探(人体运动学)
  4. MFC 基础知识:主对话框与子对话框(一)
  5. 各种数据结构性能的比较
  6. 详解javascript中的call, apply
  7. linux 之间 copy 传输文件方法:ftp、samba、sftp、scp、sz/rz
  8. 【原创】线上环境 SYN flooding 问题排查
  9. java 基于类路径搜索_一种基于ClassLoader的自定义类查找方法与流程
  10. 你的灯亮着吗?阅读笔记之三
  11. 数学连乘和累加运算符号_数学所有的公式和符号
  12. JAVA当前时间timestamp_java获取获得Timestamp类型的当前系统时间
  13. 线上服务器老是卡,该如何优化?
  14. 【无标题】外汇符合挖坟啊喝咖啡卡机
  15. 【C++进阶:二叉树进阶】二叉搜索树的操作和key模型、key/value模型的实现 | 二叉搜索树的应用 | 二叉搜索树的性能分析
  16. 自顶向下学习 RocketMQ(九):回溯消费
  17. 【转】26张PPT让你告别拖延症
  18. 拉面哥的火爆看新媒体时代的底层逻辑!
  19. 震撼来袭!葡萄城商业智能报表软件Wyn Enterprise V5.0发布会前瞻,3大亮点抢先看
  20. php读取excel文件数据

热门文章

  1. mysq命令行导出sql_mysql利用命令导出数据sql语句
  2. 贪心算法的python实现
  3. (第一章)数据库的类型
  4. hadoop 传感器数据_晋城大数据培训
  5. python获取上个月最后一天_在Python中获取本月的最后一天
  6. linux下载TCGA数据,好用的新版TCGA数据下载方法
  7. SVO: Fast Semi-Direct Monocular Visual Odometry
  8. 利用python进行数据分析——第十四章_数据分析案例
  9. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——I题 买花
  10. LaTeX中宋体中文无法加粗的情况