QT5.15.12 编译备忘

#!/bin/bash

set -e # 遇到错误立即退出,避免后续无效执行

===================== 配置参数(可按需修改)=====================

QT_VERSION="5.15.12"

INSTALL_PATH="/home/kylin/qt5" # 安装路径

SOURCE_URL="https://download.qt.io/archive/qt/5.15/${QT_VERSION}/single/qt-everywhere-opensource-src-${QT_VERSION}.tar.xz"

SOURCE_TAR="qt-everywhere-opensource-src-${QT_VERSION}.tar.xz"

SOURCE_DIR="qt-everywhere-opensource-src-${QT_VERSION}"

===================== 第一步:安装必备依赖 =====================

echo -e "\033[32m[1/6] 正在安装编译依赖...\033[0m"

sudo apt-get update

sudo apt-get install -y \

build-essential gcc g++ make cmake ninja-build \

libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev \

libxcb1-dev libxkbcommon-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev \

libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev \

libgl1-mesa-dev libglu1-mesa-dev libgles2-mesa-dev \

libssl-dev libdbus-1-dev libharfbuzz-dev libicu-dev libjpeg-dev libpng-dev \

wget tar nano

===================== 第二步:下载并解压源码 =====================

echo -e "\033[32m[2/6] 正在下载Qt ${QT_VERSION}源码...\033[0m"

if [ ! -f "${SOURCE_TAR}" ]; then

wget -c "{SOURCE_URL}" -O "{SOURCE_TAR}" # -c 支持断点续传

else

echo "源码包已存在,跳过下载"

fi

echo -e "\033[32m[3/6] 正在解压源码...\033[0m"

if [ ! -d "${SOURCE_DIR}" ]; then

tar -xf "${SOURCE_TAR}"

else

echo "源码已解压,跳过解压"

fi

cd "${SOURCE_DIR}" || exit 1 # 进入源码目录,失败则退出

===================== 第三步:修复mimetype_database报错 =====================

echo -e "\033[32m[4/6] 正在修复编译报错...\033[0m"

QMIME_FILE="qtbase/src/corelib/mimetypes/qmimeprovider.cpp"

1. 添加头文件

if ! grep -q "#include \"qmimedatabase_p.h\"" "${QMIME_FILE}"; then

sed -i '1i #include "qmimedatabase_p.h"' "${QMIME_FILE}"

fi

2. 添加变量声明(在第637行前插入)

DECLARE_CODE="extern const unsigned char mimetype_database[];\nextern const size_t MimeTypeDatabaseOriginalSize;"

if ! grep -q "extern const unsigned char mimetype_database\[\];" "${QMIME_FILE}"; then

sed -i '637i '"{DECLARE_CODE}"'' "{QMIME_FILE}"

fi

===================== 第四步:配置编译参数 =====================

echo -e "\033[32m[5/6] 正在配置编译参数...\033[0m"

./configure \

-prefix "${INSTALL_PATH}" \

-opensource \

-confirm-license \

-release \

-shared \

-no-static \

-no-opengl es2 \

-no-opengl es3 \

-no-opengl es3.2 \

-opengl desktop \

-ssl \

-dbus \

-harfbuzz \

-icu \

-no-qml-debug \

-nomake examples \

-nomake tests \

-no-feature-glibc-version-check \

-j$(nproc)

===================== 第五步:编译与安装 =====================

echo -e "\033[32m[6/6] 正在编译(多核模式)...\033[0m"

make -j$(nproc)

echo -e "\033[32m[7/7] 正在安装Qt ${QT_VERSION}...\033[0m"

sudo make install

===================== 第六步:配置环境变量 =====================

echo -e "\033[32m[8/8] 正在配置环境变量...\033[0m"

ENV_CONFIG="\n# Qt {QT_VERSION} 环境变量\\nexport QTDIR={INSTALL_PATH}\nexport PATH=\QTDIR/bin:\\PATH\nexport LD_LIBRARY_PATH=\QTDIR/lib:\\LD_LIBRARY_PATH"

写入/etc/profile(系统级环境变量,所有用户生效)

if ! grep -q "QTDIR=${INSTALL_PATH}" /etc/profile; then

sudo echo -e "${ENV_CONFIG}" >> /etc/profile

source /etc/profile # 立即生效

echo "环境变量配置完成"

else

echo "环境变量已存在,跳过配置"

fi

===================== 验证安装 =====================

echo -e "\033[32m Qt ${QT_VERSION} 编译安装完成!\033[0m"

echo -e "验证命令:qmake -v"

echo -e "安装路径:${INSTALL_PATH}"

echo -e "环境变量已写入 /etc/profile,重启终端即可全局生效"

相关推荐
charlie1145141918 小时前
现代Qt开发教程(新手篇)2.3——QImage、QPixmap、QIcon 图像处理基础
开发语言·图像处理·qt
AoDeLuo10 小时前
SOEM2.0编译与Qt调用
qt·机器视觉
大树学长11 小时前
【QT开发】Windows 10 + Qt 5.15.2 手动编译安装 Qt OPC UA 模块完整记录
开发语言·windows·qt
小短腿的代码世界13 小时前
Qt低级网络编程与零拷贝技术在高频交易中的应用:从QTcpSocket到共享内存的全链路优化
开发语言·网络·qt
qq_4017004114 小时前
Qt 自定义无边框窗口:标题栏、拖拽移动与缩放
开发语言·qt
xiaoye-duck16 小时前
Qt 信号与槽深度解析:connect 用法、自定义信号槽与 Lambda 实战
开发语言·qt
郝学胜-神的一滴18 小时前
Qt 高级开发 008: 使用QSetting记住上次打开路径
开发语言·c++·qt·开源软件
W.W.H.19 小时前
Qt 应用防多开:极简单例方案
开发语言·qt·单例模式·共享内存
qq_4017004119 小时前
Qt 中获取程序路径、用户目录、桌面路径等常用特殊路径
开发语言·qt
LostSpeed19 小时前
QT5 - 添加Astyle外部格式化工具
qt·astyle