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,重启终端即可全局生效"

相关推荐
范特西.i3 天前
QT聊天项目(8)
开发语言·qt
枫叶丹44 天前
【Qt开发】Qt界面优化(七)-> Qt样式表(QSS) 样式属性
c语言·开发语言·c++·qt
十五年专注C++开发4 天前
Qt deleteLater作用及源码分析
开发语言·c++·qt·qobject
kangzerun4 天前
SQLiteManager:一个优雅的Qt SQLite数据库操作类
数据库·qt·sqlite
金刚狼884 天前
qt和qt creator的下载安装
开发语言·qt
追烽少年x4 天前
Qt中使用Zint库显示二维码
qt
谁刺我心4 天前
qt源码、qt在线安装器镜像下载
开发语言·qt
金刚狼884 天前
在qt creator中创建helloworld程序并构建
开发语言·qt
扶尔魔ocy4 天前
【转载】QT使用linuxdeployqt打包
开发语言·qt
YxVoyager5 天前
在VS2017中使用Qt的foreach宏,IntelliSense无法正确识别函数定义
c++·qt