【问题标题】:Run Binary With Specific QT Version - Cannot mix incompatible Qt library使用特定 QT 版本运行二进制文件 - 不能混合不兼容的 Qt 库
【发布时间】:2019-01-31 16:34:14
【问题描述】:

我正在尝试使用 Virtual Box 中的 Ubuntu 机器复制我们当前在物理 Ubuntu 服务器上运行的应用程序。它是一个 QT 应用程序,但在服务器上我们使用 NPM 的 pm2 运行它。安装 QT 并安装应用程序所需的驱动程序后,我尝试运行它,但一直遇到此错误:

不能将不兼容的 Qt 库(版本 0x50701)与此库(版本 0x50905)混合使用

我从其他人那里继承了代码并且不想将项目更改为 QT5.9.5,所以我尝试使用 5.7.1 运行,我已按照其他问题的说明进行更改QT 版本升级到 5.7.1 但运行时仍然出现同样的错误。

我按照这里的说明进行操作: https://unix.stackexchange.com/questions/116254/how-do-i-change-which-version-of-qt-is-used-for-qmake

在控制台中使用“qmake -v”检查 QT 版本时,我得到以下输出:

QMake 3.0 版在 /home/sam/Qt5.7.1/5.7/gcc_64/lib 中使用 Qt 5.7.1 版

因此,尽管在我看来我正在使用所需版本的 Qt (5.7.1),但我仍然遇到库不兼容的问题,我对这一切都很陌生,如果这是一个愚蠢的问题。如果有人能告诉我该怎么做才能使用兼容的库,那就太好了,谢谢。

【问题讨论】:

  • 你在重建代码吗? qmake用于构建过程,与运行代码无关。

标签: qt ubuntu qt5 pm2


【解决方案1】:

我将尝试逐步解释这一点!

  1. 每一套完整的 Qt 库都称为一个 Qt“发行版”。您可以从多种来源获取 Qt 发行版:

    • 从操作系统的包管理器 (.deb/.rpm) 安装。
    • 来自http://qt.io 上下载的 zip 文件
    • 作为来自 git 的克隆仓库
    • 等等..
  2. 一些可用的 Qt 发行版将预先构建,而一些则需要从源代码构建。在任何一种情况下,它们都会有一个特定于特定 Qt 发行版的qmake 程序。该程序负责构建程序,以便它们链接到 qmake 所属的特定 Qt 发行版。使用QtCreator 构建时也使用qmake

  3. 1234563 /p>

这个问题有很多解决方案;

  1. 将所有 Qt 库(我的位于 /home/myusername/Qt/5.version/gcc_64/lib/*.so 中)与您的程序可执行文件放在同一文件夹中。这将确保它们优先于可能在您的动态链接器路径中的任何其他版本的 Qt。
  2. 卸载操作系统提供的 Qt 版本。这可能是不可取的,尤其是在其他程序使用它们时。
  3. 使用正确的qmake 从源代码重建您的程序。

【讨论】:

  • 您好,非常感谢,所以关于解决方案#1,我是否只需进入我的库文件夹(/home/sam/Qt5.7.1/5.7/gcc_64/lib),复制所有带有 .so 扩展名的文件,并将它们复制到与我的可执行文件相同的文件夹中?
  • 是的,基本上就是这样。你可能不需要所有这些,但仅仅为了解决一个问题,包含所有当然没有坏处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
相关资源
最近更新 更多