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

相关推荐
≮傷£≯√11 小时前
Opencv VideoCapture
qt·opencv
雨田言炎18 小时前
十、QThread多线程
linux·服务器·开发语言·前端·qt
常乐か2 天前
在 Ubuntu 24.04 中编译 Qt 5.15.2 项目完全指南
linux·qt·ubuntu
沫璃染墨2 天前
《Qt从零入门系列(二):Qt开发环境搭建——从Qt Creator到SDK配置》
c++·ide·qt
我是小灰灰吖2 天前
Ubuntu 22.04 切换为 X11 会话以解决 QT 桌面程序兼容性问题
linux·qt·ubuntu
≮傷£≯√2 天前
QT配置FFmpeg
开发语言·qt·ffmpeg
≮傷£≯√2 天前
配置 opencv Qt项目
人工智能·qt·opencv
qq_401700412 天前
Qt Modbus协议0x00
开发语言·qt
Zenova EdgeOS2 天前
C++ 工业边缘 Qt 桌面应用实战:从 QWidget 到模型视图、网络与多线程
网络·c++·qt
沫璃染墨2 天前
《Qt从零入门系列(一):Qt框架初识——从发展历史到跨平台开发》
c++·qt·系统架构·gui