直接通过源码来编译安装 QT,难度太大,耗时较长,一般不是特别推荐使用源码安装。
目录
1、下载 QT 源码包
2、搭建安装环境(下载依赖库)
3、编译QT源码的脚本
1、下载 QT 源码包
QT5.12.7源码下载地址: download | QT 5.12.7
选择任意一种下载即可,适用于 Windows 和 Linux 环境
这里选择的是.tar.xz 类型,上传到 Linux 环境,新建一个 qt 目录,然后将压缩包保存到 qt 目录下,并解压。
tar xf qt-everywhere-src-5.12.7.tar.xz -C ./
2、搭建安装环境(下载依赖库)
sudo apt-get update
sudo apt-get install libxcb-xinerama0-dev
# sudo apt-get install python 会安装失败
sudo apt-get install build-essential perl git python3
# 为了支持 -qt-xcb 选项所需的库
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
可能在make install 的时候会出现找不到 python 的问题,因为直接下载 python 失败,所以这里下载的是 python3,需要在 /bin 目录下创建一个软链接名为 python
cd /bin
sudo ln -s python3 python
3、编译QT源码的脚本
由于编译 QT 库的选项较多,这里推荐使用脚本编译,在之前的 qt 目录下创建一个脚本文件 auto-config.sh,基本步骤如下:
touch auto-config.sh # 创建脚本文件
chmod a+x auto-config.sh # 赋予脚本可执行权限
auto-config.sh 脚本文件的内容如下。需要修改下面的 QT_INSTALL_PATH 变量中的QT安装路径
#!/bin/bash
# QT 安装路径
QT_INSTALL_PATH="-prefix /home/gzx/tool/qt/qt-5.12.7-build/"
# 选择编译器
QT_COMPILER="-platform linux-g++-64" # 使用g++编译
# 清除之前的编译缓存
QT_CLEAR_CACHE="-recheck-all"
# 编译选项
CONFIG_PARAM+="-opensource " # 编译开源版本,-commercical 表示商业版本
CONFIG_PARAM+="-confirm-license " # 自动确认许可认证
CONFIG_PARAM+="-debug " # 编译模式: debug
CONFIG_PARAM+="-static " # 静态编译,-shared 表示动态编译
CONFIG_PARAM+="-nomake examples " # 不编译examples(示例)
CONFIG_PARAM+="-nomake tests " # 不编译tests(测试单元)
CONFIG_PARAM+="-qt-xcb -xkbcommon " # 其他编译选项
# 需要忽略的内容(-skip后面跟qt-everywhere-src-5.12.7下对应的目录名)
CONFIG_SKIP+="-skip qtquickcontrols "
CONFIG_SKIP+="-skip qtquickcontrols2 "
CONFIG_SKIP+="-skip qtsensors "
CONFIG_SKIP+="-skip qtdoc "
CONFIG_SKIP+="-no-openssl "
CONFIG_SKIP+="-no-opengl "
./qt-everywhere-src-5.12.7/configure $QT_INSTALL_PATH \
$QT_COMPILER \
$QT_CLEAR_CACHE \
$CONFIG_PARAM \
$CONFIG_SKIP
配置完毕后,接下来开始编译安装
make -j4 & make install
上面设置的安装目录是 qt 目录下的 qt-5.12.7-build 目录,我们进入到 qt-5.12.7-build 目录就可以看到如下所示内容:
参考文章:
Ubuntu下编译Qt5.14源码_ubuntu编译qt源码_xiaobai_cpp的博客-CSDN博客
ubuntu 下编译QT5 | 码农家园
Xubuntu20.04 静态编译 Qt 5.14.2 源码_爱养生的程序猿的博客-CSDN博客