源码编译安装Qt 5.15.3
源码下载
Qt 官方源码下载(原生BUG)
KDE源码下载(维护改进)
由于Qt 5.15.3 LTS Qt官方已不再维护,且其源码存在BUG、依赖的部分第三方不再维护甚至撤销,如定位。KDE仓库中对该版本存在的问题进行了修复。因此建议使用KDE维护的Qt 5.15.3版本源码
# 克隆
git clone https://invent.kde.org/qt/qt/qt5.git -b kde/5.15
cd qt5
# 初始化
./init-repository
# 初始化并同步所有子模块
git submodule update --init --recursive
# 检查子模块状态
# 若输出子模块项前携带'-'',表示改子模块未正常初始化或同步, 则可以执行反复执行:
# ./init-repository -f 或 git submodule update --init --recursive
# 直至子模块状态查询时输出不带'-'
git submodule status
# 切换主模块至TAG v5.15.3-lts-lgpl , 注: 不同仓库的TAG名格式不一定相同,主要关注实际仓库中的版本和LGPL协议来判断应当使用的TAG名
git submodule foreach 'git fetch --tags'
git submodule foreach 'git checkout v5.15.3-lts-lgpl || echo "No tag v5.15.3-lts-lgpl for $name"'编译构建环境
编译内存问题
# 创建一个足够大的SWAP, 如16GB
sudo swapoff -a
sudo fallocate -l 16G /swapfile
# 设置权限, 否则系统拒绝使用
sudo chmod 600 /swapfile
# 格式化为SWAP
sudo mkswap /swapfile
# 启用
sudo swapon /swapfile
# 检查是否生效
free -h
# 若希望重启操作系统后新增SWAP仍然生效,则编辑/etc/fstab, 加上这一行
/swapfile none swap sw 0 0
# 临时减少 Swap 使用频率(强烈建议):
sudo sysctl vm.swappiness=10
# 若希望减少SWAP使用频率配置永久生效, 则
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf基础构建工具
sudo apt-get install -y build-essential perl python3 git ninja-build flex bison gperf pkg-configX11、XCB全家桶
sudo apt-get install -y \
libxcb1 libxcb1-dev \
libxcb-util1 libxcb-util-dev \
libxcb-keysyms1 libxcb-keysyms1-dev \
libxcb-image0 libxcb-image0-dev \
libxcb-icccm4 libxcb-icccm4-dev \
libxcb-render-util0 libxcb-render-util0-dev \
libxcb-xinerama0 libxcb-xinerama0-dev \
libxcb-cursor0 libxcb-cursor-dev \
libxcb-xkb1 libxcb-xkb-dev \
libxcb-xinput-dev \
libxxf86vm-dev \
libzstd-dev \
libxkbcommon-dev libxkbcommon-x11-dev \
libx11-dev \
libxrender-dev libxrandr-dev libxtst-dev libxss-dev \
libxi-dev \
libx11-xcb-dev \
libxext-dev libxfixes-dev libxi-dev \
libxcb-xfixes0-dev \
libxcb-util0-dev \
libxcb-shape0-dev \
libxcb-shm0-dev \
libxcb-sync-dev \
libxcb-randr0-dev \
libudev-dev libevdev-dev \
libxkbfile-dev \
libxkbcommon-devsudo \
libxcursor-dev \
libinput-dev \
libmtdev-dev \
wayland-protocols \
libwayland-dev \
libwayland-egl-backend-dev或直接使用通配符
sudo apt-get install -y \
libxcb* \
libx11*图形、字体格式依赖
sudo apt-get install -y \
libfontconfig1-dev \
libfreetype-dev \
libpng-dev \
libjpeg-dev \
libglib2.0-dev \
libdbus-1-dev \
libicu-dev \
libssl-dev \
mesa-common-dev \
libglu1-mesa-dev \
libgtk2.0-dev \
libgtk-3-dev \
zlib1g-dev \
libharfbuzz-dev \
freeglut3-dev蓝牙
sudo apt-get install -y \
libdbus-1-dev \
libbluetooth-dev串口
sudo apt-get install -y libserialport-devWebSocket
sudo apt-get install -y libwebsockets-devPositioning
sudo apt-get install -y \
libgps-dev \
gpsd \
gpsd-clients
# sudo apt-get install -y qtbase5-private-dev
# sudo apt-get install -y libqt5positioning5-dev
sudo apt-get install -y \
geoip-bin \
geoip-database \
geoip-database-contrib \
geoclue-2.0 \
libgeoclue-2-dev安装QLocation依赖
clip2tri
使用Qt自带源码副本
# 相对路径: qtlocation/src/3rdparty
cd qt-everywhere-src-5.15.3/qtlocation/src/3rdparty/clip2tri
qmake && make -j$(nproc) && sudo make installapt安装
源码编译
poly2tri
使用Qt自带源码副本
apt安装
sudo add-apt-repository universe
sudo apt-get update -y
sudo apt-get install -y libpoly2tri-dev源码编译
git clone https://github.com/r3mi/poly2tri.js.gitclipper
apt安装
sudo add-apt-repository universe
sudo apt-get update -y
sudo apt-get install -y libclipper-dev源码编译
wget http://sourceforge.net/projects/polyclipping/files/clipper_6.4.2.zip
unzip clipper_6.4.2.zip
cd clipper_6.4.2/cpp
g++ -shared -fPIC -o libclipper.so clipper.cpp
sudo cp libclipper.so /usr/local/lib/
sudo cp clipper.hpp /usr/local/include/安装QDoc依赖
sudo apt-get install -y libclang-dev llvm
# 查看 LLVM 的可执行程序路径
which llvm-config
llvm-config --version
# 将 LLVM 的可执行路径导出到环境变量 PATH
# 根据实际路径调整
export PATH=/usr/lib/llvm-20/bin:$PATH安装QWebEngine、QPdf、QDoc 依赖Python2
若环境支持Python2安装,则无需下载源码进行编译安装。
# 找个目录下载 Python2 的源码, 使用源码编译安装
cd ~/cache
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
tar xf Python-2.7.18.tgz
cd Python-2.7.18
./configure --prefix=$HOME/opt/python2
make -j$(nproc)
make install
# 将 Python2 的安装路径导出到 PATH, 并设置 PYTHON 为 python2
export PATH=$HOME/opt/python2/bin:$PATH
export PYTHON=python2安装QPdf依赖
sudo apt-get install -y \
libmysqlclient-dev \
libsrtp2-dev安装OpenGL、Mesa
sudo apt-get install -y \
mesa-common-dev \
libglu1-mesa-dev \
libgl1-mesa-dev \
libegl1-mesa-dev安装QWebEngine(Chromium)依赖
sudo apt-get install -y \
libnss3-dev libatk1.0-dev libatk-bridge2.0-dev libcups2-dev \
libdrm-dev libgbm-dev libxcomposite-dev libxdamage-dev \
libxshmfence-dev libasound2-dev libpulse-dev \
nodejs \
npm \
libpci-dev \
gyp \
libwebp \
libjsoncpp-dev \
libopus-dev \
libminizip-dev \
libavutil-dev \
libavformat-dev \
libavcodec-dev \
libevent-dev \
libvpx-dev \
libsnappy-dev \
libre2-dev \
libprotobuf-dev \
protobuf-compiler \
protobuf-compile \
python3 python3-dev python3-setuptools python3-pip安装Quick3D依赖Assimp
若环境支持安装, 则不需要从源码编译
# 下载源码
git clone https://github.com/assimp/assimp.git
cd assimp
git checkout v4.1.0
mkdir build && cd build
# 不指定安装路径, 默认安装/usr/local下
cmake .
make -j$(nproc)
sudo make install安装其他组件
sudo apt-get install -y \
gstreamer1.0-tools \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libdbus-1-dev dbus dbus-tests libdbus-glib-1-devOpenSSL源码编译(选)
OpenSSL可以选择安装libssl-dev或从源码编译安装
cd ~/cache/qt5
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar xf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=$HOME/qt-deps/openssl no-shared
make -j$(nproc)
make install_swICU源码编译(选)
ICU可选择安装libicu-dev或从源码编译
cd ~/cache/qt5
wget https://github.com/unicode-org/icu/releases/download/release-73-2/icu4c-73_2-src.tgz
tar xf icu4c-73_2-src.tgz
cd icu/source
./configure --prefix=$HOME/qt-deps/icu
make -j$(nproc)
make installlibproxy源码编译(选)
libproxy可选择安装sudo apt-get install -y libproxy-de,或从源码编译
cd ~/cache/qt5
git clone https://github.com/libproxy/libproxy.git
cd libproxy
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/qt-deps/libproxy
make -j$(nproc)
make installGStreamer 源码编译(选)
GStreamer可选择安装或从源码编译
cd ~/cache/qt5
git clone https://gitlab.freedesktop.org/gstreamer/gstreamer.git
cd gstreamer
git checkout 1.20.6 # Ubuntu 22.04 对应版本
meson setup builddir --prefix=$HOME/qt-deps/gstreamer -Dbuildtype=release
ninja -C builddir
ninja -C builddir install编译安装
当前版本支持指定debug-and-release,故分次进行release与debug版本的编译,两次编译指定相同的安装路径,则debug和relase共存为一份。
mkdir build && cd buildrelease
# 删除build下前次数据
# -force-debug-info 指定release携带debug信息
rm -rf ./*
# 配置编译
../configure \
-opensource -confirm-license \
-prefix ~/opt/qt/qt/qt-5.15.3 \
-release \
-force-debug-info \
-separate-debug-info \
-nomake tests \
-nomake examples \
\ #使用Qt自带副本, 而不使用系统版本
-qt-zlib \
-qt-libpng \
-qt-libjpeg \
-qt-freetype \
-qt-harfbuzz \
-qt-pcre \
-qt-doubleconversion \
-qt-xkbcommon \
-qt-xcb \
-qt-sqlite \
-qt-md4c \
-qt-hunspell \
# 指定系统assimp的头文件与库路径
-qt-assimp #-I/opt/assimp-4.1/include -L/opt/assimp-4.1/lib\
\
-dbus-linked \
-glib \
-pulseaudio \
-alsa \
-icu \
-openssl-linked \
-gstreamer 1.0 \
-cups \
\
-opengl desktop \
-qpa xcb \
-xkbcommon \
-feature-egl \
-feature-system-proxies \
-libproxy \
-gtkstyle \
-feature-wayland_client \
-webengine-proprietary-codecs -webengine-ffmpeg \
-feature-webengine-spellchecker \
\
-sse2 -sse3 -ssse3 \
-avx -avx2 \
-f16c \
-v
# 请注意configure完成后的提示,使用gmake进行编译与安装,不要使用make
gmake -j$(nproc)
gmake installdebug
# 删除build下前次数据
rm -rf ./*
# 配置编译
../configure \
-opensource -confirm-license \
-prefix ~/opt/qt/qt/qt-5.15.3 \
-release \
-force-debug-info \
-separate-debug-info \
-nomake tests \
-nomake examples \
\ #使用Qt自带副本, 而不使用系统版本
-qt-zlib \
-qt-libpng \
-qt-libjpeg \
-qt-freetype \
-qt-harfbuzz \
-qt-pcre \
-qt-doubleconversion \
-qt-xkbcommon \
-qt-xcb \
-qt-sqlite \
-qt-md4c \
-qt-hunspell \
# 指定系统assimp的头文件与库路径
-qt-assimp #-I/opt/assimp-4.1/include -L/opt/assimp-4.1/lib\
\
-dbus-linked \
-glib \
-pulseaudio \
-alsa \
-icu \
-openssl-linked \
-gstreamer 1.0 \
-cups \
\
-opengl desktop \
-qpa xcb \
-xkbcommon \
-feature-egl \
-feature-system-proxies \
-libproxy \
-gtkstyle \
-feature-wayland_client \
-webengine-proprietary-codecs -webengine-ffmpeg \
-feature-webengine-spellchecker \
\
-sse2 -sse3 -ssse3 \
-avx -avx2 \
-f16c \
-v
# 请注意configure完成后的提示,使用gmake进行编译与安装,不要使用make
gmake -j$(nproc)
gmake install
评论区(3条评论)
Hola, quería saber tu precio..
测试