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 "\03332m\[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 "\03332m\[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 "\03332m\[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 "\03332m\[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 "\03332m\[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 "\03332m\[6/6 正在编译(多核模式)...\033[0m"

make -j$(nproc)

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

sudo make install

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

echo -e "\03332m\[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,重启终端即可全局生效"

相关推荐
imatt10 小时前
Qt Creator 在Windows下编译信息乱码
windows·qt
赤水无泪11 小时前
qt中图标、名称的设置方式
开发语言·qt
房开民14 小时前
Qt TCP 服务器开发实战:与 VisionMaster OCR 通信
服务器·qt·tcp/ip
熬夜苦读学习15 小时前
QT_信号和槽
开发语言·qt
Quz16 小时前
QML 文字入场动画:逐字弹出、逐字飞入、3D 飞入
qt·3d·动画·qml
豆浆D油条1 天前
QT容器类QList调用erase崩溃
开发语言·qt·rpc
杜子不疼.2 天前
【Qt常用控件】WindowTitle 与 WindowIcon:窗口标题和图标
开发语言·qt
sycmancia2 天前
Qt——另一种创建线程的方式
开发语言·qt
sycmancia3 天前
Qt——多线程与界面组件的通信
开发语言·qt·算法
Quz3 天前
QML 基础组件专栏目录(V1)
qt·qml