麒麟V10源码编译QT5.6.3 (x86 & arm64)

有个需求就是在麒麟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、测试

相关推荐
Evand J2 小时前
【MATLAB例程】TOA和TDOA混合定位,适用于二维平面的高精度定位。锚点数量、位置、测量噪声可自行调节
开发语言·matlab·定位·tdoa
念越3 小时前
数据结构:栈堆
java·开发语言·数据结构
淮北4943 小时前
pip虚拟环境包的问题
开发语言·python·pip
dear_bi_MyOnly3 小时前
【多线程——线程状态与安全】
java·开发语言·数据结构·后端·中间件·java-ee·intellij-idea
常年游走在bug的边缘3 小时前
掌握JavaScript作用域:从函数作用域到块级作用域的演进与实践
开发语言·前端·javascript
jiaguangqingpanda3 小时前
Day36-20260204
java·开发语言
ctyshr3 小时前
C++编译期数学计算
开发语言·c++·算法
打码的猿3 小时前
Qt对话框不锁死主程序的方法
开发语言·qt
努力写代码的熊大3 小时前
c++异常和智能指针
java·开发语言·c++