运行 具有特定 QT 版本的二进制文件 - 无法混合不兼容的 Qt 库

Run Binary With Specific QT Version - Cannot mix incompatible Qt library

我正在尝试使用 Virtual Box 中的 Ubuntu 机器复制我们当前在物理 Ubuntu 服务器上 运行ning 的应用程序。它是一个 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),但我仍然遇到库不兼容的问题,我对所有这一切都很陌生,如果出现这种情况,我深表歉意是个愚蠢的问题。如果有人能告诉我如何使用兼容的库,那就太好了,谢谢。

我会尝试逐步解释这个!

  1. 每套完整的Qt库称为一个Qt"distribution"。您可以从各种来源获得 Qt 发行版:

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

  3. 构建时也使用
  4. 如果你有一个用 qmake 构建的二进制文件并且你尝试 运行 在另一台计算机上,它可能会在动态 [=58= 期间找到错误的 Qt 库]ing 并吐出 "incompatible version of Qt".

  5. 的错误

这个问题有很多解决办法;

  1. 将所有 Qt 库(我的库在 /home/myusername/Qt/5.version/gcc_64/lib/*.so 中)收集到与程序可执行文件相同的文件夹中。这将确保它们比可能在您的动态 linker 路径中的任何其他 Qt 版本更受欢迎。
  2. 卸载 OS 提供的 Qt 版本。这可能是不可取的,特别是如果其他程序使用它们。
  3. 使用正确的 qmake.
  4. 从源代码重建您的程序