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

时间:2019-01-31 16:34:15

标签: qt ubuntu qt5 pm2

我正在尝试使用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),但仍然遇到库不兼容的问题,对于这一切我很陌生,如果这很抱歉,愚蠢的问题。如果有人能告诉我该如何使用兼容的库,那就太好了,谢谢。

1 个答案:

答案 0 :(得分:1)

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

  1. 每套完整的Qt库称为Qt“发行版”。您可以从多种来源获得Qt分布:

    • 从操作系统的软件包管理器(.deb / .rpm)安装。
    • http://qt.io上下载的zip文件中
    • 作为git的克隆存储库
    • 等。
  2. 一些可用的Qt发行版将是预先构建的,有些则需要从源代码构建。无论哪种情况,它们都将具有特定于该特定Qt分布的qmake程序。该程序负责构建程序,以便它们链接到qmake所属的特定Qt发行版。与qmake一起构建时,也使用QtCreator

  3. 如果您使用一个qmake构建了二进制文件,并尝试在另一台计算机上运行它,则在动态链接期间它可能会找到错误的Qt库,并吐出“ Qt版本不兼容”的错误。

有很多解决此问题的方法;

  1. 在程序可执行文件所在的文件夹中收集所有Qt库(我的目录位于/home/myusername/Qt/5.version/gcc_64/lib/*.so中)。这样可以确保它们比动态链接程序路径中可能使用的其他任何版本的Qt更受欢迎。
  2. 卸载操作系统提供的Qt版本。这可能是不可取的,尤其是在其他程序使用它们的情况下。
  3. 使用正确的qmake从源代码重建程序。