当前位置: 首页 > 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.jsqmd.com/news/898738/

相关文章:

  • 2026年平价好用姨妈巾品牌深度分析:选型规则与高性价比品牌推荐 - 万事通达
  • 2026年合肥灭蟑螂公司|合肥专业灭蟑螂认准净安虫控,根除蟑螂杜绝反复繁殖 - 资讯纵览
  • ROS多机协同实战:从零搭建主从机通信网络
  • 2026年安平车间隔离护栏网厂家推荐及技巧分享 - 资讯纵览
  • SpringBoot+Vue宠物医院项目实战:从零到部署,手把手教你搞定RBAC权限与多端登录
  • 海南口碑好的geo优化企业 - 资讯纵览
  • 辽宁省营口CPPMSCMP官网报考入口,官方授权双证报考中心 - 众智商学院课程中心
  • 别再只盯着安装了!Agile Controller-Campus部署后,如何用华为交换机做802.1X认证的完整联调指南
  • RTX 5070 Ti vs RTX 4090 Ti对比 专业数码硬件对比工具网站hmc-tech.com 网站介绍
  • 使用Python配合Taotoken快速搭建一个多模型对话测试工具
  • 从EFT/ESD到辐射:电机控制系统EMC设计实战与标准解析
  • 2026年10款降AIGC网站横评:最高AI率100%直降至0.12% - 降AI小能手
  • 2026年成人纸尿裤经济型产品选购全攻略:性价比、品质与场景适配的综合考量 - 万事通达
  • 3天搭建本地缠论量化系统:告别手工画线,拥抱自动分析新纪元
  • PDF 组件里文字没渲染出来,只显示了线条(或者空白)
  • 营收暴增68%,利润却腰斩,宇树科技的IPO是“真香”还是“惊吓”?
  • 2026年BarTender公司推荐:五大王牌排名实测 - 资讯纵览
  • ROS2 Foxy下,用C++搞定六轴IMU数据解析与Rviz2实时姿态显示的完整流程
  • 3分钟搞定:Mac免费读写NTFS硬盘的终极指南
  • 合肥白蚁防治公司|合肥专业灭白蚁认准净安虫控,无损治蚁+超长质保防复发 - 资讯纵览
  • 软硬协同噪声抑制:从硬件滤波到智能优化VMD的工程实践
  • 主板南北桥芯片:从核心枢纽到外围管家,一文读懂其协同与分工
  • Adobe-GenP 3.0:免费解锁Adobe Creative Cloud的终极指南
  • 气象数据处理实战:用CDO和grib_copy搞定GRIB文件合并与格式转换(附避坑要点)
  • 【小白也能学会】企业微信机器人关联 OpenClaw 配置方法(包含安装包)
  • pot-desktop跨平台翻译工具终极指南:15种语音朗读功能深度解析
  • VMware Workstation Pro 17免费激活终极指南:解锁完整虚拟化体验的5个关键
  • 深度解析:C 语言中的内存对齐与边界安全
  • SigmaStudio调音实战:用ADAU1701的16个EQ滤波器例程,手把手教你调出专业级音效
  • nvme-cli架构深度解析:现代NVMe管理工具的设计哲学与实践