运行 具有特定 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),但我仍然遇到库不兼容的问题,我对所有这一切都很陌生,如果出现这种情况,我深表歉意是个愚蠢的问题。如果有人能告诉我如何使用兼容的库,那就太好了,谢谢。
我会尝试逐步解释这个!
每套完整的Qt库称为一个Qt"distribution"。您可以从各种来源获得 Qt 发行版:
- 从 OS (.deb/.rpm) 的包管理器安装。
- 来自 http://qt.io
上下载的 zip 文件
- 作为来自 git
的克隆存储库
- 等..
一些可用的 Qt 发行版将预先构建,而另一些则需要从源代码构建。在任何一种情况下,它们都将有一个特定于该特定 Qt 发行版的 qmake
程序。该程序负责构建程序,以便它们 link 到 qmake
所属的特定 Qt 发行版。 qmake
在使用 QtCreator
.
构建时也使用
如果你有一个用 qmake
构建的二进制文件并且你尝试 运行 在另一台计算机上,它可能会在动态 [=58= 期间找到错误的 Qt 库]ing 并吐出 "incompatible version of Qt".
的错误
这个问题有很多解决办法;
- 将所有 Qt 库(我的库在 /home/myusername/Qt/5.version/gcc_64/lib/*.so 中)收集到与程序可执行文件相同的文件夹中。这将确保它们比可能在您的动态 linker 路径中的任何其他 Qt 版本更受欢迎。
- 卸载 OS 提供的 Qt 版本。这可能是不可取的,特别是如果其他程序使用它们。
- 使用正确的
qmake
. 从源代码重建您的程序
我正在尝试使用 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),但我仍然遇到库不兼容的问题,我对所有这一切都很陌生,如果出现这种情况,我深表歉意是个愚蠢的问题。如果有人能告诉我如何使用兼容的库,那就太好了,谢谢。
我会尝试逐步解释这个!
每套完整的Qt库称为一个Qt"distribution"。您可以从各种来源获得 Qt 发行版:
- 从 OS (.deb/.rpm) 的包管理器安装。
- 来自 http://qt.io 上下载的 zip 文件
- 作为来自 git 的克隆存储库
- 等..
一些可用的 Qt 发行版将预先构建,而另一些则需要从源代码构建。在任何一种情况下,它们都将有一个特定于该特定 Qt 发行版的
qmake
程序。该程序负责构建程序,以便它们 link 到qmake
所属的特定 Qt 发行版。qmake
在使用QtCreator
. 构建时也使用
如果你有一个用
qmake
构建的二进制文件并且你尝试 运行 在另一台计算机上,它可能会在动态 [=58= 期间找到错误的 Qt 库]ing 并吐出 "incompatible version of Qt". 的错误
这个问题有很多解决办法;
- 将所有 Qt 库(我的库在 /home/myusername/Qt/5.version/gcc_64/lib/*.so 中)收集到与程序可执行文件相同的文件夹中。这将确保它们比可能在您的动态 linker 路径中的任何其他 Qt 版本更受欢迎。
- 卸载 OS 提供的 Qt 版本。这可能是不可取的,特别是如果其他程序使用它们。
- 使用正确的
qmake
. 从源代码重建您的程序