这篇文章主要是描述在Ubuntu20.04的环境下,如何编译QT5.15源码,做个记录,供参考学习,一起进步。
一、Ubuntu20.04在编译QT前,需要配置的环境
安装一些必要的依赖项:
sudo apt-get install build-essential \
libgl1-mesa-dev \
libglu1-mesa-dev \
libegl1-mesa-dev \
libgles2-mesa-dev \
libxrandr-dev \
libxext-dev \
libxtst-dev \
libxrender-dev \
libxkbfile-dev \
libsqlite3-dev \
libssl-dev \
libcurl4-openssl-dev \
libicu-dev \
libfontconfig1-dev \
libfreetype6-dev \
libinput-dev \
libxcb1-dev \
libx11-xcb-dev \
libxcb-image0-dev \
libxcb-keysyms1-dev \
libxcb-shm0-dev \
libxcb-icccm4-dev \
libxcb-sync-dev \
libglib2.0-dev \
libpulse-dev \
libavahi-client-dev \
libavahi-core-dev \
libsqlite3-dev \
libdbus-1-dev \
libxshmfence-dev \
mesa-common-dev \
g++ \
gcc \
make
二、获取QT5.15源码
1. 下载源码包
我这里是在 清华大学开源软件镜像站 获取的QT5.15的源码
cd ~/work/qt
wget https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/qt/5.15/5.15.17/single/qt-everywhere-opensource-src-5.15.17.tar.xz
2. 解压包
下载完成,解压源码包
tar -xvf qt-everywhere-opensource-src-5.15.17.tar.xz
三、配置QT
1. 解压后进入QT的目录
cd qt-everywhere-src-5.15.17/
2. 可以单独创建一个build目录,在该目录下创建build.sh 脚本
mkdir build
cd build/
vim build.sh
build.sh 脚本的内容:
cd ../qt-everywhere-src-5.15.17
./configure \
-prefix ../build/qt5.15.17 \
-opensource \
-confirm-license \
-developer-build \
-c++std c++14 \
-nomake examples \
-nomake tests
运行下build.sh试试:
chmod 777 build.sh
./build.sh
运行成功
Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into '/home/traveler/work/qt/build/qt5.15.17'.
Prior to reconfiguration, make sure you remove any leftovers from
the previous build.
四、配置QT的configure 关键参数说明
分类 | 参数 | 作用 |
---|---|---|
安装目录类 | -prefix <dir> |
最终 make install 时把 Qt 装到哪里(默认 /usr/local/Qt-5.x.x )。 |
-bindir / -libdir / -headerdir … |
把 bin/lib/include 再细分到不同目录,通常没必要动。 | |
版权/许可证 | -opensource |
使用 LGPL/GPL 开源版。 |
-commercial |
商业版(需要商业授权)。 | |
-confirm-license |
非交互式自动接受协议,CI/脚本必备。 | |
构建范围 | -nomake examples / tests |
不编译 examples 和 tests,可大大加快编译。 |
-skip <module> |
整个模块不参与构建。例:-skip qtwebengine 跳过 QtWebEngine(需要 Chromium,编译慢且吃内存)。 |
|
-make libs -make tools |
只编译 libs 与 tools(默认已包含)。 | |
第三方库策略 | -qt-<lib> |
使用 Qt 自带的第三方库(如 -qt-zlib )。 |
-system-<lib> |
使用系统已安装的库,体积更小、后续更新由系统管理。例:-system-zlib -system-pcre -system-freetype |
|
-no-<lib> |
完全禁用该库。例:-no-opengl 把 OpenGL 支持关掉。 |
|
GUI 与插件 | -qt-xcb |
使用 Qt 自带的 xcb 插件实现,避免发行版 xcb 版本差异导致运行时找不到平台插件。 |
-opengl desktop / es2 |
指定 OpenGL 实现方式;桌面 Linux 一般 desktop 即可。 |
|
调试/优化 | -debug / -release / -debug-and-release |
决定编译 Debug 还是 Release 版本。 |
-static / -shared |
默认 -shared 动态库;静态库则用 -static (需再处理 LGPL 合规)。 |
|
-optimize-size |
Release 时进一步优化体积。 | |
交叉编译 | -xplatform linux-arm-gnueabi-g++ |
目标平台名(mkspecs 目录下)。 |
-device <device> |
具体设备描述文件。 | |
-device-option CROSS_COMPILE=<toolchain> |
指定交叉工具链前缀。 | |
-sysroot <dir> |
交叉编译时根文件系统路径。 | |
平台相关 | -platform linux-g++ |
主机编译器,Ubuntu 默认 g++ 已够用。 |
-platform linux-clang |
想用 clang 就换这个。 |
五、 编译并安装Qt
make -j8
make install
等待许久,编译完成并install安装后,在路径下就有了qt5.15.17文件夹了
traveler@123:~/work/qt/build$ ls
build.sh qt5.15.17
六、配置QT运行的环境变量
sudo vim ~/.bashrc
增加如下三行:
export QTDIR=/usr/local/Qt5.15.17
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
再source一下使得环境变量生效
source ~/.bashrc
7. 验证Qt安装
完成以上步骤后,Qt 5.15.17已经在Ubuntu 20.04系统上安装好了。
通过运行qmake --version
来验证安装。
qmake --version
QMake version 3.1
Using Qt version 5.15.17 in /usr/local/Qt5.15.17/lib
验证成功!