news 2026/5/1 9:37:57

从零到一:在麒麟V10桌面系统上部署Qt 5.12.3开发环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零到一:在麒麟V10桌面系统上部署Qt 5.12.3开发环境

1. 麒麟V10桌面系统安装准备

第一次接触国产操作系统可能会有点陌生,但别担心,跟着我的步骤来操作,保证你能顺利搞定。麒麟V10作为国产操作系统的代表,在政务、金融等领域应用越来越广泛。我去年接手一个政务项目迁移时,就完整走过这套流程,当时踩过的坑现在都帮你标出来了。

首先需要准备两样东西:系统镜像和虚拟机环境。麒麟官网提供了试用版下载,直接搜索"麒麟操作系统官网",在试用申请页面填写基本信息就能获取下载链接。这里有个小技巧:建议使用企业邮箱注册,个人邮箱有时会收不到验证邮件。我帮客户部署时遇到过三次这种情况,最后都是用公司邮箱才搞定。

虚拟机推荐用VMware Workstation 16以上版本,对国产系统兼容性更好。创建虚拟机时有个关键点:虽然麒麟是基于Linux的,但VMware里没有直接对应的选项。实测发现选择"Ubuntu 64位"最稳定,我在Intel和龙芯平台上都验证过。磁盘空间建议分配至少80GB,之前有同事只分30GB,结果Qt编译到一半就报空间不足。

2. 系统安装详细步骤

安装过程比Windows简单多了,但有几个关键节点需要注意。挂载ISO镜像启动后,你会看到蓝底白字的安装界面。用方向键选择"安装银河麒麟操作系统"后,会进入图形化安装向导。

分区环节建议新手直接使用自动分区。我遇到过手动分区导致引导失败的案例,特别是UEFI模式下。用户创建界面要记住密码复杂度要求:必须包含大小写字母、数字和特殊字符。上周培训时有个学员设了简单密码,结果死活登录不进去。

安装过程大概需要20-30分钟,具体取决于你的硬件配置。完成后首次启动会比较慢,这是在初始化环境,耐心等待就好。进入桌面后第一件事:打开终端运行sudo kylin-software-center,把所有系统更新都装上。这个步骤很多教程会忽略,但实测能解决90%的依赖问题。

3. Qt 5.12.3安装全流程

现在来到重头戏——Qt环境部署。首先去Qt官网下载离线安装包,注意要选5.12.3的Linux版本(文件名是qt-opensource-linux-x64-5.12.3.run)。有个坑要注意:浏览器下载可能会被拦截,建议用wget命令直接下载。

安装前必须做的三件事:

  1. 给安装包执行权限:chmod +x qt-opensource-linux-x64-5.12.3.run
  2. 临时断开网络连接(否则会卡在注册页面)
  3. 安装基础依赖:sudo apt install libgl1-mesa-dev libxkbcommon-x11-0

运行安装程序时,建议选择自定义安装路径。我习惯放在/home/用户名/Qt5.12.3下,这样重装系统时项目不会受影响。组件选择方面,除了Android和iOS相关模块,其他建议全选。特别是要勾选Qt Charts和Qt Data Visualization,这两个后装特别麻烦。

4. 开发环境配置技巧

安装完Qt才是真正的开始。首先配置环境变量,在~/.bashrc末尾添加:

export PATH=/home/你的用户名/Qt5.12.3/5.12.3/gcc_64/bin:$PATH export LD_LIBRARY_PATH=/home/你的用户名/Qt5.12.3/5.12.3/gcc_64/lib:$LD_LIBRARY_PATH

保存后执行source ~/.bashrc生效。这里有个隐藏技巧:用qtchooser工具管理多版本Qt,适合后续需要切换版本的情况。

接下来安装编译工具链:

sudo apt update sudo apt install g++ make cmake

麒麟系统的软件源有时候会抽风,如果报错可以尝试更换为国内镜像源。我在合肥、北京和广州的客户现场都遇到过这个问题,解决方法各不相同,建议准备多个备用源。

5. 第一个Qt项目实战

打开Qt Creator,新建一个Widgets Application项目。创建时有个关键选项:构建套件(Kits)配置。正常情况下Qt Creator会自动检测到刚安装的Qt版本,如果没有的话需要手动指定qmake路径(在Qt安装目录的bin文件夹里)。

项目创建完成后,先别急着编码。右键点击项目选择"执行qmake",这步很多新手会忽略。我带的实习生有80%的编译错误都是漏了这步导致的。构建时如果报GL/gl.h找不到,需要安装:

sudo apt install libglu1-mesa-dev freeglut3-dev

测试运行时可能会遇到中文显示方框的问题。解决方法是在main.cpp里添加:

#include <QFontDatabase> // 在QApplication a(argc, argv);后添加 QFontDatabase::addApplicationFont("/usr/share/fonts/windows/SimSun.ttf"); a.setFont(QFont("SimSun", 12));

这个字体路径可能需要根据实际情况调整。

6. 常见问题解决方案

部署过程中最常遇到三类问题:依赖缺失、权限不足和图形界面异常。对于依赖问题,可以先用ldd命令检查可执行文件的依赖关系。比如:

ldd /home/你的用户名/Qt5.12.3/5.12.3/gcc_64/bin/qmake

权限问题通常表现为无法创建文件或访问设备。建议将当前用户加入kvm和render组:

sudo usermod -a -G kvm,render $USER

然后注销重新登录生效。

如果Qt程序界面显示异常(比如控件错位),很可能是主题兼容性问题。在main函数最开头加上:

QApplication::setStyle("fusion");

这个方案在我参与的五个迁移项目中都有效。

7. 性能优化建议

麒麟系统上运行Qt程序有几个优化点值得注意。首先是内存管理,建议在/etc/sysctl.conf中添加:

vm.swappiness=10 vm.vfs_cache_pressure=50

然后执行sudo sysctl -p生效。这个调整能显著减少交换分区使用。

对于图形密集型应用,需要配置OpenGL加速。检查显卡驱动是否正常:

glxinfo | grep "OpenGL renderer"

如果显示llvmpipe而不是显卡型号,说明没启用硬件加速。这时需要安装对应显卡驱动,Intel显卡用:

sudo apt install xserver-xorg-video-intel

编译大型项目时,可以修改/etc/security/limits.conf文件提高资源限制:

* soft nofile 65535 * hard nofile 65535

这个设置特别适合在虚拟机上开发时使用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 9:35:55

ADXL335模拟加速度计驱动库:轻量级嵌入式ADC采集方案

1. 项目概述 7Semi ADXL335 Accelerometer 是一款面向嵌入式平台的轻量级模拟加速度传感器驱动库&#xff0c;专为 ADXL335 这一经典三轴模拟输出 MEMS 加速度计设计。该库并非基于数字通信协议&#xff08;如 IC 或 SPI&#xff09;&#xff0c;而是直接采集 X、Y、Z 三路模拟…

作者头像 李华
网站建设 2026/4/11 0:50:41

AD22100A模拟温度传感器嵌入式驱动深度解析

1. OSS-EC_ADI_AD22100A_00000057 库深度解析&#xff1a;AD22100A 高精度模拟温度传感器的嵌入式驱动实现1.1 器件特性与工程定位AD22100A 是 Analog Devices&#xff08;ADI&#xff09;推出的一款高精度、单片集成式模拟输出温度传感器&#xff0c;其核心价值在于将传统热敏…

作者头像 李华
网站建设 2026/4/12 3:36:51

FPGA加速CNN推理:从44us到4us,我们如何在DE1-SoC上把Python模型跑快10倍?

FPGA加速CNN推理&#xff1a;从44us到4us的性能优化实战 在边缘计算领域&#xff0c;实时性往往决定着系统的成败。当我们的团队在DE1-SoC平台上将一个二值化CNN模型的推理时间从44微秒压缩到4微秒时&#xff0c;这不仅是数字的游戏&#xff0c;更揭示了硬件加速的精妙艺术。本…

作者头像 李华
网站建设 2026/4/11 0:45:21

uniapp 中父组件如何优雅地调用子组件方法:ref 的妙用

1. 为什么需要父组件调用子组件方法&#xff1f; 在实际开发中&#xff0c;组件化开发已经成为前端开发的主流方式。uniapp作为跨平台开发框架&#xff0c;同样遵循这一理念。但组件化带来的一个常见问题就是&#xff1a;如何让父组件与子组件进行有效通信&#xff1f; 想象一下…

作者头像 李华
网站建设 2026/4/13 23:39:37

编程语言的扩展功能和复用机制

编程语言的扩展机制&#xff0c;是赋予开发者在不修改语言核心或其标准库的情况下&#xff0c;为其增添新功能的能力。它的核心目标是灵活性和可扩展性&#xff0c;而实现路径与语言的设计哲学紧密相关。对于扩展&#xff0c;大致可归为语言内置与外部交互两条主要路径。 &…

作者头像 李华