都是软件版本兼容惹的祸:龙芯 UOS 系统上 Qt Creator 启动失败

在《在龙芯迷你电脑上搭建开发环境》一文中,我详细介绍了如何在龙芯 uos 系统上搭建开发环境,这其中就介绍了 qt 开发工具 qt creator 的安装过程。然而,qt creator 安装之后,从菜单上启动,没有任何反应,从终端上启动,提示如下:

alex@alex-loongson-MiniPC:~$ qtcreator mesa: CommandLine Error: Option 'help-list' registered more than once!LLVM ERROR: inconsistency in registered CommandLine options

AI 给的回答是:

然而,检查 Qt Creator 的依赖后发现,它并未直接依赖于 LLVM:

$ ldd /usr/bin/qtcreator         linux-vdso.so.1 (0x000000ffffe90000)        libExtensionSystem.so.4 => /usr/bin/../lib/loongarch64-linux-gnu/qtcreator/libExtensionSystem.so.4 (0x000000fff47c4000)        libAggregation.so.4 => /usr/bin/../lib/loongarch64-linux-gnu/qtcreator/libAggregation.so.4 (0x000000fff47b4000)        libUtils.so.4 => /usr/bin/../lib/loongarch64-linux-gnu/qtcreator/libUtils.so.4 (0x000000fff454c000)        libQt5Widgets.so.5 => /lib/loongarch64-linux-gnu/libQt5Widgets.so.5 (0x000000fff3e3c000)        libQt5Gui.so.5 => /lib/loongarch64-linux-gnu/libQt5Gui.so.5 (0x000000fff3884000)        libQt5Concurrent.so.5 => /lib/loongarch64-linux-gnu/libQt5Concurrent.so.5 (0x000000fff3874000)        libQt5Network.so.5 => /lib/loongarch64-linux-gnu/libQt5Network.so.5 (0x000000fff36ac000)        libQt5Core.so.5 => /lib/loongarch64-linux-gnu/libQt5Core.so.5 (0x000000fff316c000)        libGL.so.1 => /lib/loongarch64-linux-gnu/libGL.so.1 (0x000000fff3010000)        libpthread.so.0 => /lib/loongarch64-linux-gnu/libpthread.so.0 (0x000000fff2fe4000)        libstdc++.so.6 => /lib/loongarch64-linux-gnu/libstdc++.so.6 (0x000000fff2e38000)        libm.so.6 => /lib/loongarch64-linux-gnu/libm.so.6 (0x000000fff2d78000)        libgcc_s.so.1 => /lib/loongarch64-linux-gnu/libgcc_s.so.1 (0x000000fff2d1c000)        libc.so.6 => /lib/loongarch64-linux-gnu/libc.so.6 (0x000000fff2b94000)        /lib64/ld.so.1 (0x000000fff4819900)        libdl.so.2 => /usr/bin/../lib/loongarch64-linux-gnu/qtcreator/../libdl.so.2 (0x000000fff2b88000)        libQt5Qml.so.5 => /usr/bin/../lib/loongarch64-linux-gnu/qtcreator/../libQt5Qml.so.5 (0x000000fff2764000)        libpng16.so.16 => /lib/loongarch64-linux-gnu/libpng16.so.16 (0x000000fff2728000)        libharfbuzz.so.0 => /lib/loongarch64-linux-gnu/libharfbuzz.so.0 (0x000000fff2614000)        libz.so.1 => /lib/loongarch64-linux-gnu/libz.so.1 (0x000000fff25f0000)        libicui18n.so.63 => /lib/loongarch64-linux-gnu/libicui18n.so.63 (0x000000fff22b4000)        libicuuc.so.63 => /lib/loongarch64-linux-gnu/libicuuc.so.63 (0x000000fff20a4000)        libpcre2-16.so.0 => /lib/loongarch64-linux-gnu/libpcre2-16.so.0 (0x000000fff204c000)        libdouble-conversion.so.1 => /lib/loongarch64-linux-gnu/libdouble-conversion.so.1 (0x000000fff2030000)        libglib-2.0.so.0 => /lib/loongarch64-linux-gnu/libglib-2.0.so.0 (0x000000fff1ef0000)        libGLX.so.0 => /lib/loongarch64-linux-gnu/libGLX.so.0 (0x000000fff1eb4000)        libGLdispatch.so.0 => /lib/loongarch64-linux-gnu/libGLdispatch.so.0 (0x000000fff1d34000)        libfreetype.so.6 => /lib/loongarch64-linux-gnu/libfreetype.so.6 (0x000000fff1c68000)        libgraphite2.so.3 => /lib/loongarch64-linux-gnu/libgraphite2.so.3 (0x000000fff1c34000)        libicudata.so.63 => /lib/loongarch64-linux-gnu/libicudata.so.63 (0x000000fff01fc000)        libpcre.so.3 => /lib/loongarch64-linux-gnu/libpcre.so.3 (0x000000fff01ac000)        libX11.so.6 => /lib/loongarch64-linux-gnu/libX11.so.6 (0x000000fff0058000)        libXext.so.6 => /lib/loongarch64-linux-gnu/libXext.so.6 (0x000000fff0038000)        libxcb.so.1 => /lib/loongarch64-linux-gnu/libxcb.so.1 (0x000000fff0000000)        libXau.so.6 => /lib/loongarch64-linux-gnu/libXau.so.6 (0x000000ffefff4000)        libXdmcp.so.6 => /lib/loongarch64-linux-gnu/libXdmcp.so.6 (0x000000ffeffe4000)        libbsd.so.0 => /lib/loongarch64-linux-gnu/libbsd.so.0 (0x000000ffeffc4000)        librt.so.1 => /lib/loongarch64-linux-gnu/librt.so.1 (0x000000ffeffb4000)

既然主体程序与 LLVM 无直接关联,那么问题很可能出在插件上。经过一番排查,最终定位到 /usr/lib/loongarch64-linux-gnu/qtcreator/plugins/libClangTools.so 插件。解决的方法就是重命名,不加载这个插件:

$ sudo mv /usr/lib/loongarch64-linux-gnu/qtcreator/plugins/libClangTools.so /usr/lib/loongarch64-linux-gnu/qtcreator/plugins/libClangTools.so.bak

完成上述操作后,重新启动 Qt Creator,熟悉的界面终于出现了:

都是软件版本兼容惹的祸:龙芯 UOS 系统上 Qt Creator 启动失败

至此,问题得以部分解决。尽管缺少 ClangTools 插件,但对 Qt 开发影响不大。

当然最彻底的解决方法是找出 llvm 的版本问题,但这个问题尝试过,没有解决,若是哪位高手能指点一二,感激不尽?

软件兼容性问题的思考在这里,我想额外聊聊软件兼容性问题。这不是一个新话题,我之前写过的一些文章中也涉及到相关内容,例如:

《龙芯 UOS 系统升级 Python》《UOS 系统 Qt 版本切换》《从 X11 到 Wayland,迈出这一步为何如此艰难?》这些问题无一例外都与软件版本的兼容性密切相关。可以说,兼容性问题贯穿了软件产品的整个生命周期。Windows 在这方面相对做得不错,但也无法完全避免。例如,Windows 系统中多版本的 VC++ 运行库依然困扰着不少开发者。

火龙果写作 火龙果写作

用火龙果,轻松写作,通过校对、改写、扩展等功能实现高质量内容生产。

火龙果写作 106 查看详情 火龙果写作

软件的持续迭代和版本共存,难免带来兼容性挑战。新功能的引入往往需要修改底层接口或引入新的依赖,而这些变动可能与现有系统中的其他组件或应用程序产生冲突。尽管向后兼容是理想状态,但在实际开发中,往往难以做到尽善尽美。资源有限、技术债务积累、开发周期紧张等因素,都可能导致开发者不得不在兼容性与交付之间权衡取舍。

尤其是在 Linux 系统中,包管理机制进一步加剧了这一问题。以 Debian 系的 Linux 发行版为例,deb 包丰富性,安装便捷,但也不得不面对 deb 包版本不兼容的烦恼。一个依赖的更新可能导致链式反应,使得多个软件无法正常工作。

既然软件的兼容问题这么难以解决,那么能否借鉴 Docker 的做法,为应用软件建立一个独立的运行环境?通过将应用程序及其依赖隔离运行,可以最大程度地降低因系统环境变动带来的不确定性。

事实上,许多 Linux 厂商已经开始尝试这种做法,比如统信推出的玲珑包格式。关于玲珑,请参考我之前写过的一篇文章:《国产系统之如意玲珑》。

玲珑包通过将应用程序与其依赖完整打包在一起,提供了一个自包含的运行环境。理论上,它可以在任何支持玲珑的 Linux 发行版上运行,有效减少跨发行版的兼容性问题,同时也避免了同一系统上软件组件版本冲突的困扰。

更重要的是,玲珑包的理念与现代软件分发的趋势高度契合。它不仅提高了软件的可移植性,也简化了开发者的发布流程。对于终端用户而言,安装软件不再依赖于繁杂的系统环境配置,而是更接近于“开箱即用”的体验。这种模式还减少了对系统管理员的依赖,为个人用户、开发者和企业提供了更多的自由和便利。

当然,玲珑的解决方案也并非完美,至少目前还没达到完美的程度。这段时间也尝试在项目中使用玲珑包,就碰到如下问题:

自包含的打包格式可能导致磁盘空间使用的增加自包含的打包方式本质上是通过将应用程序及其所有依赖统一打包,确保在隔离的运行环境中正常工作。然而,这种方式的一个直接后果是可能会显著增加磁盘空间的占用。特别是在多个应用程序依赖相同的底层组件时,每个玲珑包都会各自携带一份相同的依赖库,这种冗余无法像传统包管理系统一样通过共享库机制减少存储开销。尽管后续可以通过技术手段进行优化,例如压缩包体、分层存储以及模块化依赖,但无论如何,相比传统的 deb 包,玲珑包的体积仍然会更大。当然这个问题可能会随着存储空间越来越廉价,不那么突出。应用程序运行在沙箱中,访问系统资源受限为了增强隔离性和安全性,玲珑包中的应用程序通常运行在沙箱环境中,限制其对系统资源的直接访问。这种机制虽然提高了安全性,但也为某些应用的运行带来了障碍,尤其是那些需要深入访问系统核心功能的应用。例如,某些系统工具在沙箱中无法正常访问硬件接口。这种限制在其他平台上也存在,比如 macOS 的沙箱机制就经常导致一些系统应用无法通过 App Store 的审核,开发者只能通过分发独立安装包或请求额外权限来解决问题。对于玲珑包而言,如何在安全性与功能性之间取得平衡,将是一个长期需要考虑的难题。玲珑包中运行的应用程序,调试起来不太方便调试是软件开发过程中至关重要的环节,而在沙箱环境中运行的应用程序,由于与宿主系统环境隔离,调试起来可能面临更多挑战。例如,开发者可能无法直接访问沙箱内部的日志文件、调试信息或运行状态,需要借助额外的工具或命令来进入沙箱环境进行调试。这不仅增加了调试的复杂度,也可能导致开发效率的降低。此外,沙箱机制的隔离性还可能干扰一些调试工具的正常运行。生态系统的构建和适配仍在初期玲珑包作为一种相对较新的技术,其生态系统建设还在起步阶段。与传统的 deb 包相比,玲珑包的构建工具链、最佳实践和社区支持尚未成熟,文档也不太全面。有道是关关难过关关过,虽然玲珑包还存在一些问题,但这是未来发展的方向。期待随着技术的不断迭代和社区的持续投入,这些问题都得到解决,再也不要被这些软件版本兼容问题所折磨。

以上就是都是软件版本兼容惹的祸:龙芯 UOS 系统上 Qt Creator 启动失败的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/512094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月9日 01:14:51
下一篇 2025年11月9日 01:16:11

相关推荐

  • Python 数据可视化的透镜:放大数据的细节

    Matplotlib:用于自定义和低级绘图 Matplotlib 是一个功能强大的低级绘图库,提供对绘图过程的精细控制。它允许开发者自定义轴标签、图例、颜色和样式,从而创建高度定制的图表。适合需要完全控制图形外观的应用。 Seaborn:用于统计数据可视化 Seaborn 构建在 Matplotli…

    2025年12月13日
    000
  • python考级有多少级

    Python 考级共有 12 级,从初级到高级,依次掌握 Python 基础语法、高级特性、高级概念和底层机制等,难度逐渐递增。 Python 考级有多少级? Python 考级共有 12 级,从初级到高级,每个级别难度逐渐递增。 初级(1-2 级) 初学者入门级,掌握 Python 基础语法和简单…

    2025年12月13日
    000
  • python用来做什么的

    Python是一种通用编程语言,用途广泛,包括:Web开发(动态网站、RESTful API、Web界面)数据分析和机器学习(处理大数据、机器学习建模、统计计算)自动化和脚本(自动化任务、创建脚本执行系统操作)应用程序开发(桌面和移动应用程序、跨平台应用、游戏)科学计算(数值运算、数据建模、数据可视…

    2025年12月13日
    000
  • python能用来干啥

    Python 是一种用途广泛、面向对象的编程语言,拥有以下主要功能:数据科学和机器学习:用于构建预测模型、处理大数据集和进行机器学习实验。Web 开发:用于构建动态、可扩展和高效的 Web 应用程序。自动化任务:用于开发自动化脚本,以与 Web 应用程序和网站交互。系统管理:用于配置、部署和管理基础…

    2025年12月13日
    000
  • python怎么读取数据集

    如何在 Python 中读取数据集:使用 Pandas 读入数据表,方法是使用 pd.read_csv()、pd.read_excel() 或 pd.read_json()。使用 NumPy 读入多维数组,方法是使用 np.genfromtxt()。使用 scikit-learn 加载标准数据集,方…

    2025年12月13日
    000
  • Python 数据可视化的魔法:将数据变成引人入胜的故事

    图表的力量 图表是数据可视化的基石,它们使用条形图、折线图和饼图等图形元素来展示数据。通过比较数据点,图表可以轻松识别差异、趋势和异常值。例如,一家公司的收入增长趋势可以通过折线图清楚地说明,而饼图可以显示不同部门对总收入的贡献。 信息图表:讲故事的魔法 信息图表是将复杂数据转化为引人入胜叙事的有力…

    2025年12月13日
    000
  • python中大写转小写函数

    在Python中,lower()函数可将字符串中的大写字母转换为小写。该函数不会改变原始字符串,而是返回一个新字符串,其中所有大写字母都已转换为小写。它是一个字符串对象的内置方法,可以直接对字符串调用。例如,将 “HELLO WORLD” 转换为 “hello w…

    2025年12月13日
    000
  • 深入了解Python的本质:探讨Python在不同领域的广泛应用

    Python作为一种简单易学、功能强大的编程语言,在科学计算、Web开发、人工智能等领域有着广泛的应用。本文将探讨Python在不同领域的应用,并给出具体的代码示例,以帮助读者更深入了解Python的本质。 首先,在科学计算领域,Python凭借其丰富的科学计算库如NumPy、SciPy、Panda…

    2025年12月13日
    000
  • Python和C++:哪个更受欢迎?

    Python和C++:哪个更受欢迎? Python和C++是两种流行的编程语言,它们在软件开发领域中经常被使用。而在选择使用哪种语言时,很多人会考虑到它们的受欢迎程度。那么,Python和C++究竟哪个更受欢迎呢?本文将通过具体的代码示例来分析两者的受欢迎程度。 首先,让我们来看一下Python的受…

    2025年12月13日
    000
  • 从零开始学习Python编程:掌握这些代码,轻松入门

    Python编程入门:掌握这些代码,轻松入门 引言:Python作为一种简单易学的高级编程语言,被广泛应用于各种领域,如数据分析、人工智能、网络爬虫等。学习Python编程是很多人的首选,因为它具备易读易懂的语法和丰富的库支持。本文旨在帮助初学者快速入门Python编程,通过具体的代码示例进行讲解。…

    2025年12月13日
    300
  • 深入探讨Python len函数的使用案例和注意要点

    深入解析Python len函数的应用场景和注意事项 Python作为一种高级编程语言,提供了丰富的内置函数来简化开发过程。其中,len函数是Python中常用的一个函数之一,用于返回给定对象的长度或元素个数。在本文中,我们将深入探讨len函数的应用场景和注意事项,并提供具体的代码示例。 len函数…

    2025年12月13日
    100
  • Python中安装matplotlib:一个简单的快速入门指南

    标题:快速入门:Python中安装matplotlib的简易指南 在Python中,matplotlib是一个广泛使用的数据可视化库,它提供了丰富的绘图功能,能够以简单易懂的方式展示数据。本文将介绍如何在Python中安装matplotlib,并提供具体的代码示例,以帮助初学者快速入门。 一、安装P…

    2025年12月13日
    000
  • 深入解析Django安装命令,Python开发利器

    Python开发利器:Django安装命令详解 Django是一款强大的Python Web框架,它提供了许多方便快捷的工具和功能,可以帮助开发者在短时间内构建出健壮的Web应用程序。要开始使用Django,首先需要安装它。本文将详细介绍Django的安装命令,并提供具体的代码示例。 Django可…

    2025年12月13日
    000
  • Python中安装matplotlib的详细指南

    详细教程:在Python中安装matplotlib的步骤,需要具体代码示例 引言:在数据可视化和科学计算领域,matplotlib是一个非常强大的Python库。它提供了丰富的绘图函数和工具,使得我们能够用简洁清晰的图表展示数据。为了使用matplotlib库,我们首先需要在Python环境中安装它…

    2025年12月13日
    000
  • Python len函数实例:如何利用长度计算优化程序效率

    Python len函数是一个非常常用的函数,它用于返回一个序列对象的长度或元素个数。在编写程序时,利用len函数可以快速获取一个对象的大小,从而优化程序的效率。本文将介绍如何利用长度计算来优化程序效率,并且给出具体的代码示例。 在很多情况下,我们需要统计一个对象的元素个数。比如,我们需要知道一个字…

    2025年12月13日
    000
  • 从零开始:在Python中安装matplotlib的完整指南

    从零开始:在Python中安装matplotlib的完整指南 摘要:Python是一种功能强大的编程语言,广泛应用于数据分析、可视化和科学计算领域。而matplotlib是Python中最受欢迎的可视化库之一,提供了丰富的绘图功能。本文将指导您如何从零开始,在Python中安装和配置matplotl…

    2025年12月13日
    000
  • 使用len函数高效编程,提升Python技巧

    掌握Python len函数的使用技巧,提升编程效率,需要具体代码示例 Python是一种广泛应用于编程领域的高级编程语言,具有简单易学、代码可读性高等特点,因此备受开发者的喜爱。在Python的标准库中,有许多内置函数可以帮助我们更加高效地进行编程。其中之一便是len函数。 len函数是Pytho…

    2025年12月13日
    000
  • 无痛升级pip源,解决下载问题的终极指南

    pip换源方法大揭秘,让你轻松解决下载问题,需要具体代码示例 引言:在使用Python开发过程中,很多时候需要使用第三方库来完成一些功能,而pip(Python包管理工具)就是我们最常用的库安装工具。然而,pip在国内的下载源常常会因为网络问题导致下载速度慢甚至失败,影响我们的开发效率。为了解决这一…

    2025年12月13日
    000
  • 使用Python演示多继承的常见模式与示例实现

    利用Python实现多继承的常用模式与示例演示 概述:多继承是指一个类可以从多个父类中继承属性和方法。在Python中,多继承是一种常用的编程技术,可以通过组合多个父类的特性,实现更加灵活和复杂的类结构。本文将介绍多继承的常用模式和使用示例,并提供具体的代码演示。 常用模式: 同名方法调用顺序:当子…

    2025年12月13日
    000
  • Python运算符使用指南:从入门到精通

    Python运算符详解:引领初学者走入高级使用者行列 引言:Python作为一门简洁、强大且广泛应用的编程语言,其运算符号的使用无疑是每个Python学习者必须掌握的基本知识。运算符号不仅可以进行基本的数学计算,还可以进行字符串的操作、逻辑判断等等。本文将从初学者到高级使用者,详细讲解Python运…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信