有个需求就是在麒麟V10上安装QT5.6.3。麒麟系统自带QT5.12.8。没错,就是不想用自带的。

那就开整!
1、下载源码
Qt 5.6.3 的源码包主要包含:
Qt 基础库(如 Core、GUI、Widgets、Network 等模块)。
平台相关的插件和工具(如 qmake、Qt Designer、Qt Linguist 等)。
可选模块(如 Qt Quick、Qt Multimedia、Qt WebKit 等)。
不包含 Qt Creator,因为 Qt Creator 是一个独立的 IDE,与 Qt 库分开发布。
Qt Creator是一个由Qt开发团队开发的集成开发环境(IDE):
代码编辑器:Qt Creator内置了强大的代码编辑器,支持C++、QML、JavaScript等多种编程语言。
可视化设计器:Qt Creator提供了一个可视化的图形用户界面设计器,允许开发者通过拖放组件和调整布局来创建用户界面。
编译器和调试器:Qt Creator集成了编译器和调试器,支持C++和QML等语言的编译和调试。
版本控制:Qt Creator支持多种版本控制系统,如Git、Subversion等,方便开发者管理代码版本和协作开发。
部署工具:Qt Creator提供了部署工具,可以将应用程序打包为可执行文件或安装程序,方便发布和分发应用程序。
Qt 5.6.3 :
https://download.qt.io/new_archive/qt/5.6/5.6.3/single/qt-everywhere-opensource-src-5.6.3.tar.xz
QtCreator 4.2.0:
https://download.qt.io/archive/qtcreator/4.2/4.2.0/qt-creator-opensource-src-4.2.0.tar.gz
2、安装编译基础包
powershell
sudo apt-get update
sudo apt-get install build-essential git
//20260205补充安装1:
sudo apt install -y gcc g++ make cmake perl python \
libfontconfig1-dev libfreetype6-dev libx11-dev \
libxext-dev libxfixes-dev libxi-dev libxrender-dev \
libxcb1-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 libxcb-xinerama0-dev \
libxkbcommon-dev libxkbcommon-x11-dev bison flex gperf \
libasound2-dev libcups2-dev libdrm-dev libegl1-mesa-dev \
libnss3-dev libpci-dev libudev-dev libxslt1-dev \
libxml2-dev libwebp-dev libssl-dev libicu-dev \
libglib2.0-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libpulse-dev libsqlite3-dev libinput-dev libharfbuzz-dev
//20260205补充安装3:
sudo apt install -y libkrb5-dev
3、编译安装QT5.6.3
3.1 解压:
powershell
tar -xvf qt-everywhere-opensource-src-5.6.3.tar.xz
cd qt-everywhere-opensource-src-5.6.3
3.2 编译(编译问题见3.3节):
执行配置:
powershell
#./configure -prefix /home/kylin/qt5.6.3 -qt-xcb -nomake tests -nomake examples -opensource -confirm-license
#20260205更新配置文件(解决之前启动报错问题):
./configure -prefix /home/kylin/qt5.6.3 \
-release \
-opensource \
-confirm-license \
-no-pch \
-qt-zlib \
-qt-libpng \
-qt-libjpeg \
-qt-freetype \
-qt-harfbuzz \
-qt-pcre \
-qt-xcb \
-xkbcommon \
-opengl desktop \
-qpa xcb \
-no-use-gold-linker \
-fontconfig \
-system-freetype \
-nomake examples \
-nomake tests

编译和安装:
powershell
make -j$(nproc) # 使用全部CPU核心进行编译
make install #安装目录在/home/kylin/qt5.6.3 这一步时间挺久的,耐心等待

3.3 编译问题
3.3.1: 问题1
powershell
error: 'SIOCGSTAMP' undeclared (first use in this function); did you mean 'SIOCGARP'
解决:添加#include <linux/sockios.h>报错即可
powershell
vim ./qtserialbus/src/plugins/canbus/socketcan/socketcanbackend.cpp +49
powershell
#include <linux/can/error.h>
#include <linux/can/raw.h>
#include <errno.h>
#include <unistd.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <linux/sockios.h> #添加此头文件
3.3.2: 问题2
出现/usr/bin/ld.gold:错误:cannot find -lpoly2tri

解决:
powershell
git clone https://github.com/jhasse/poly2tri.git
cd poly2tri
mkdir build
cd build
cmake .. -DCMAKE_CXX_FLAGS="-fPIC" -DCMAKE_BUILD_TYPE=Release #-fPIC让编译出的代码不依赖固定内存地址,可被动态库任意加载
make
sudo cp libpoly2tri.a /lib/
3.3.3:问题3
缺少头文件:

解决:
powershell
sudo apt install -y libfreetype6-dev
sudo ln -s /usr/include/freetype2/ft2build.h /usr/include/
sudo ln -s /usr/include/freetype2/freetype /usr/include/
3.3.4 问题4

查询系统openssl版本:

openssl版本过高,Qt 5.6.3 需要 OpenSSL 1.0.x 版本,降到OpenSSL 1.0.2
解决
powershell
wget http://distfiles.macports.org/openssl/openssl-1.0.2s.tar.gz
tar -xzvf openssl-1.0.2s.tar.gz
cd openssl-1.0.2s/
./Configure linux-x86_64 --prefix=/usr/local/ssl -fPIC no-asm no-stack-protector shared zlib no-krb5
#(如果是arm64平台则执行:./Configure linux-aarch64 --prefix=/usr/local/ssl -fPIC no-asm no-stack-protector shared zlib no-krb5)
make -j$(nproc)
sudo make install
#安装完成了,对原先openssl进行备份
sudo mv -f /usr/bin/openssl /usr/bin/openssl.old
sudo mv -f /usr/include/openssl /usr/include/openssl.old
#修改软链
sudo ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
sudo ln -s /usr/local/ssl/include/openssl /usr/include/openssl
#添加so库的路径
sudo ldconfig -v
#查看安装版本:
openssl version

3.3.5 问题5

当前编译的项目(如 Qt/Qt Creator)中定义了 OPENSSL_ALGORITHM_DEFINES 宏,但该宏在你安装的 OpenSSL 1.0.2s 版本中已被废弃 / 移除。
解决
sudo vim /usr/include/x86_64-linux-gnu/openssl/opensslconf.h
注释掉# error OPENSSL_ALGORITHM_DEFINES no longer supported如下图所示

3.3.6 问题6

解决
powershell
sudo apt install -y libkrb5-dev
3.4、切换QT5.6.3
备份系统自带QT:
powershell
sudo mv /usr/bin/qmake /usr/bin/qmake.bak
sudo mv /usr/bin/qtchooser /usr/bin/qtchooser.bak
为了确保你的系统能够找到新安装的 QT,在 ~/.bashrc 或/etc/profile 文件中添加以下行:
powershell
export QTDIR=/home/kylin/qt5.6.3
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
如下图所示:

然后,运行 source ~/.bashrc 或重新登录以应用更改。
3.5:验证安装
powershell
qmake --version
检查是否正确安装了 QT 5.6.3

4、编译安装Qt Creator 4.2.0
4.1 解压
powershell
tar -xvf qt-creator-opensource-src-4.2.0.tar.gz
cd qt-creator-opensource-src-4.2.0
4.1 编译
powershell
qmake -r
make -j$(nproc) # 执行编译,请注意这里不要使用多核优化-j选项, 会出错 大约1个小时

4.2 安装
powershell
make install INSTALL_ROOT=/home/kylin/qt-creator-4.2.0
4.3 编译问题(如果是ARM版的麒麟V10会出现下述问题)
问题1:编译时出现 cpuid.h 错误(ARM 平台常见),需手动修改源码
解决1:
https://codereview.qt-project.org/c/qt-creator/qt-creator/+/79728 参考此链接对源码进行修改,或者把这两个文件下载下来,直接替换。

4.4:验证安装
执行/home/kylin/qt-creator-4.2.0/bin/qtcreator
powershell
/home/kylin/qt-creator-4.2.0/bin/qtcreator

4.4.1 问题1(此问题在上述编译QT5.6.3已经修复,此处留作示例)

安装成功了,但是启动报错。
解决:



然后重启即可。这里是绕开了。
5、测试
