linux环境下编译Qt源码
环境配置: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源码相关推荐
- linux环境下编译llvm源码
环境配置:Ubuntu-16.04 1) 下载依赖 sudo apt-get install cmake sudo apt-get install xz-utils sudo apt-get inst ...
- Linux环境下Arm端源码编译OpenCV+ncnn目标检测模型实例运行调试完整实践记录
今天需要在嵌入式设备端运行C的程序,里面有依赖OpenCV的部分,这就需要编译安装好OpenCV才行,这个对于我来说还是比较陌生的,我很少用C,所以这里面也没少折腾,一路上遇上了很多的报错,这里我将完 ...
- NDK实践(一)在linux环境下编译ffmpe
系列文章目录: NDK实践(一)在linux环境下编译ffmpe NDK实践(二)将编译的ffmpeg静态库集成到Android工程 最近开始接触学习ndk开发,本着边学习边实践的原则,计划完成视频编 ...
- 从零开始,手把手教你如何在Ubuntu下编译VLC-Android源码
前言 公司项目中使用的libvlcjni.so库文件,有点老,对Android 6.0+系统兼容性太差了,当程序运行在Android6.0+系统上时,回弹出警告框,提示libvlcjni.so:tex ...
- linux环境下编译部署php生产环境
linux环境下编译部署php生产环境 版本控制 php:7.2.4 nginx:1.9.9 部分插件版本 xlswriter:1.3.3.2 redis:3.1.3 一.安装php 1.安装依赖(之 ...
- WINDOWS 下编译 ffmpeg 源码总结
WINDOWS 下编译 ffmpeg 源码,有两种方式:VC.GCC 1.VC 编译: https://github.com/ShiftMediaProject/FFVS-Project-Gene ...
- Win7下编译mosquitto源码
在windows下编译mosquitto源码使用的工具包括: 1.visual studio 2010(用vs .net 2003的编译器时cmake会提示未识别的c或c++编译器) 2.cmake ...
- 在CentOS下编译VLC源码
在CentOS下编译VLC源码 一.下载VLC源码 二.VLC编译与安装 1.编译与安装 2.库文件 3.头文件 三.报错解决 1.configure: error: Could not find l ...
- win7下编译python源码
win7下编译python源码 下载源码: 打开网页:https://www.python.org/downloads/release/python-2710/ 下载完成后解压即可 查看文档: 其实最 ...
最新文章
- 为你分享10篇NLP、CV领域优质论文
- Rails字符集问题
- 3D模型初探(人体运动学)
- MFC 基础知识:主对话框与子对话框(一)
- 各种数据结构性能的比较
- 详解javascript中的call, apply
- linux 之间 copy 传输文件方法:ftp、samba、sftp、scp、sz/rz
- 【原创】线上环境 SYN flooding 问题排查
- java 基于类路径搜索_一种基于ClassLoader的自定义类查找方法与流程
- 你的灯亮着吗?阅读笔记之三
- 数学连乘和累加运算符号_数学所有的公式和符号
- JAVA当前时间timestamp_java获取获得Timestamp类型的当前系统时间
- 线上服务器老是卡,该如何优化?
- 【无标题】外汇符合挖坟啊喝咖啡卡机
- 【C++进阶:二叉树进阶】二叉搜索树的操作和key模型、key/value模型的实现 | 二叉搜索树的应用 | 二叉搜索树的性能分析
- 自顶向下学习 RocketMQ(九):回溯消费
- 【转】26张PPT让你告别拖延症
- 拉面哥的火爆看新媒体时代的底层逻辑!
- 震撼来袭!葡萄城商业智能报表软件Wyn Enterprise V5.0发布会前瞻,3大亮点抢先看
- php读取excel文件数据
热门文章
- mysq命令行导出sql_mysql利用命令导出数据sql语句
- 贪心算法的python实现
- (第一章)数据库的类型
- hadoop 传感器数据_晋城大数据培训
- python获取上个月最后一天_在Python中获取本月的最后一天
- linux下载TCGA数据,好用的新版TCGA数据下载方法
- SVO: Fast Semi-Direct Monocular Visual Odometry
- 利用python进行数据分析——第十四章_数据分析案例
- 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——I题 买花
- LaTeX中宋体中文无法加粗的情况