当前位置: 首页 > news >正文

在银河麒麟与飞腾平台上从源码构建Qt 5.9开发环境的实战解析

1. 环境准备与依赖检查

在飞腾处理器和银河麒麟操作系统上搭建Qt 5.9开发环境,第一步就是要做好基础环境的准备工作。这个环节看似简单,但往往决定了后续编译能否顺利进行。我在这套国产平台上实测时,发现依赖库的完整性直接影响着编译成功率。

首先需要下载三个关键组件:

  • Qt 5.9.2源码包(qt-everywhere-opensource-src-5.9.2.tar.xz)
  • Qt Creator 4.5.0源码包(qt-creator-opensource-src-4.5.0.tar.xz)
  • zlib压缩库(zlib-1.2.11.tar.gz)

下载完成后,建议将这些文件统一存放在/home/Qt5.9.2目录下。这里有个小技巧:使用wget命令直接下载可以避免浏览器下载可能出现的文件损坏问题:

mkdir -p /home/Qt5.9.2 cd /home/Qt5.9.2 wget https://download.qt.io/archive/qt/5.9/5.9.2/single/qt-everywhere-opensource-src-5.9.2.tar.xz

接下来是最关键的依赖库安装环节。银河麒麟基于Ubuntu衍生,但软件源存在差异,需要特别注意。我整理了一份完整的依赖清单,按照功能模块分类安装更不容易遗漏:

# 基础编译工具链 sudo apt-get install build-essential gcc g++ make perl python git # X11相关依赖 sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libxrender-dev libxi-dev sudo apt-get install libxkbcommon-dev libxkbcommon-x11-dev libxcb-xinerama0-dev # OpenGL支持 sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev libegl1-mesa-dev # 多媒体支持 sudo apt-get install libasound2-dev libpulse-dev libavcodec-dev libavformat-dev

特别提醒:如果遇到包找不到的情况,可能需要先更新软件源。我在实测中发现银河麒麟默认源有时不完整,可以临时添加Ubuntu官方源:

sudo vim /etc/apt/sources.list # 添加以下源 deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe multiverse

2. Qt 5.9源码编译实战

2.1 源码解压与配置

解压源码时建议使用-p参数保留原始权限,避免后续出现奇怪的权限问题:

tar -xJpf qt-everywhere-opensource-src-5.9.2.tar.xz cd qt-everywhere-opensource-src-5.9.2

配置环节是第一个容易踩坑的地方。针对飞腾ARM架构,需要特别指定平台参数。我经过多次测试,这个配置组合成功率最高:

./configure -prefix /opt/Qt5.9.2 \ -opensource \ -confirm-license \ -nomake tests \ -nomake examples \ -xplatform linux-arm-gnueabi-g++ \ -qt-libjpeg \ -qt-libpng \ -qt-zlib \ -qt-freetype \ -qt-pcre \ -no-opengl \ -no-sse2

关键参数解析:

  • -prefix:指定安装目录,建议放在/opt下便于管理
  • -xplatform:必须指定为linux-arm-gnueabi-g++适配飞腾
  • -no-opengl:银河麒麟默认OpenGL实现可能不兼容,建议先禁用
  • -nomake tests:跳过测试用例可大幅缩短编译时间

2.2 编译过程优化

开始编译前,建议先检查CPU核心数,合理设置并行编译参数。飞腾FT-2000/4处理器建议使用:

make -j4 # 根据实际CPU核心数调整

编译过程中常见问题处理:

  1. 报错缺少libicu:执行sudo apt-get install libicu-dev
  2. **undefined reference toFT_***'**:需要安装freetype库sudo apt-get install libfreetype6-dev`
  3. QtWebEngine编译失败:可以先跳过-skip qtwebengine

我遇到最棘手的问题是内存不足导致编译中断,解决方法有两个:

  • 增加swap空间(至少4GB)
  • 分模块编译:make module-qtbase先编译基础模块

2.3 安装与验证

编译成功后,执行安装:

sudo make install

安装完成后需要配置环境变量,在~/.bashrc末尾添加:

export PATH=/opt/Qt5.9.2/bin:$PATH export LD_LIBRARY_PATH=/opt/Qt5.9.2/lib:$LD_LIBRARY_PATH

验证安装是否成功:

qmake -v # 应显示 Qt version 5.9.2

3. Qt Creator定制化安装

3.1 源码编译要点

解压Qt Creator源码后,需要先配置qmake路径:

tar -xJpf qt-creator-opensource-src-4.5.0.tar.xz cd qt-creator-opensource-src-4.5.0 export QMAKE=/opt/Qt5.9.2/bin/qmake

配置时建议禁用Clang代码模型以加快编译:

qmake -r QMAKE_CXXFLAGS+="-std=c++11" \ QMAKE_CFLAGS+="-Os" \ CONFIG+=release \ IDE_DISABLE_CLANG_LIBTOOLING=true

3.2 解决界面兼容问题

银河麒麟桌面环境可能遇到Qt Creator界面异常,解决方法:

  1. 修改启动脚本qtcreator.sh
#!/bin/sh export QT_AUTO_SCREEN_SCALE_FACTOR=1 export QT_QPA_PLATFORM=xcb /opt/QtCreator/bin/qtcreator $@
  1. 解决中文输入法问题:
sudo apt-get install fcitx-frontend-qt5

3.3 项目配置技巧

首次启动需要配置工具链:

  1. Kits设置:添加自定义编译器路径
  2. Qt Versions:指定/opt/Qt5.9.2/bin/qmake
  3. Debuggers:建议安装gdb-multiarch

实测中发现需要特别注意:

  • 项目构建目录不要包含中文路径
  • 默认编码设置为UTF-8
  • 禁用Shadow build直到环境完全稳定

4. 常见问题深度解决方案

4.1 图形渲染异常处理

当出现黑屏或渲染异常时,可以尝试以下方案:

  1. 修改Qt环境变量:
export QT_QUICK_BACKEND=software export QMLSCENE_DEVICE=softwarecontext
  1. 强制使用软件渲染:
export LIBGL_ALWAYS_SOFTWARE=1

4.2 交叉编译配置

如果需要为其他ARM设备交叉编译,需修改qmake.conf:

cd /opt/Qt5.9.2/mkspecs/linux-arm-gnueabi-g++ sudo vim qmake.conf

关键参数示例:

QMAKE_CC = aarch64-linux-gnu-gcc QMAKE_CXX = aarch64-linux-gnu-g++ QMAKE_LINK = aarch64-linux-gnu-g++

4.3 性能调优建议

  1. 启用NEON指令集加速: 在qmake.pro文件中添加:
QMAKE_CXXFLAGS += -mfpu=neon -mfloat-abi=hard
  1. 内存优化配置:
export QT_IM_MODULE=ibus export QT_LOGGING_RULES="*.debug=false"
  1. 针对飞腾CPU的编译优化:
./configure -march=armv8-a+crc+crypto ...
http://www.rkmt.cn/news/1406744.html

相关文章:

  • 2026年安平车间隔离护栏网厂家推荐及技巧分享 - 资讯纵览
  • RTX 5070 Ti vs RTX 4090 Ti对比 专业数码硬件对比工具网站hmc-tech.com 网站介绍
  • 辽宁省营口CPPMSCMP官网报考入口,官方授权双证报考中心 - 众智商学院课程中心
  • 使用Python配合Taotoken快速搭建一个多模型对话测试工具
  • 修复Win10文件属性缺失数字签名与详细信息选项卡的注册表方案
  • Tiny RDM多语言切换指南:让Redis管理跨越语言障碍
  • LangChain 1.0生态实战:构建可观测的智能代理与复杂工作流
  • 2026年主流同声传译AI工具实测对比全场景专业实测,冷门黑马拉开的差距竟然这么大
  • C语言THD计算实战:从频谱泄露到插值优化的工程实现
  • VMware Workstation Pro 17免费激活终极指南:解锁完整虚拟化体验的5个关键
  • 从理论到工程:揭秘百天线实时MIMO测试平台的设计与实现
  • 20260527 紫题训练
  • 越秀区搬家公司电话 异地搬家省钱全攻略(2026 最新) - 从来都是英雄出少年
  • ProperTree:跨平台plist文件编辑器的终极解决方案
  • 【实践】DICOM C-Move 服务深度解析:从三方通信架构到 fo-dicom 实战
  • 三步解锁小爱音箱终极潜能:开源固件重塑智能语音助手
  • 利用Taotoken用量看板精细化管控团队AI调用成本
  • 一个被囚禁在服务器里的“灵魂”,和一片永远寂静的代码,哪个更让你脊背发凉?
  • Overleaf新手避坑指南:从‘乱码’到完美中文简历,我只用了这3步(XeLaTeX配置详解)
  • 从EFT/ESD到辐射:电机控制系统EMC设计实战与标准解析
  • 基于FPGA的ETEDPOF无源控制在电动汽车电机驱动中的应用
  • Adobe-GenP 3.0:免费解锁Adobe Creative Cloud的终极指南
  • 别再自己写登录了!用Casdoor + OAuth 2.0,30分钟给你的Spring Boot应用加上GitHub/微信登录
  • 基于CGBRBM的无监督调制识别:从星座图到聚类分类的完整实践
  • 告别虚拟机!在Windows 11上快速搭建Masm汇编环境(附保姆级图文教程)
  • SENN模型实战:BiLSTM+CNN双编码器实现精准文本情感识别
  • Ubuntu系统使用apt软件如何锁定低版本安装软件不升级为高版本
  • 规则失效后的终极诊断:构建基于内存记录的系统可观测性体系
  • 告别“伪变化”:STANet中的时空注意力如何解决遥感图像的光照与配准难题
  • Festo推出面向协作机器人的双指气动夹爪HPPH