Qt5 的链接器目录
Linker directory for Qt5
我想 运行 一个基于 Qt5 共享对象的应用程序。
尽管我已经 apt install
编辑了 qt5-default
、qttools5-dev
和 qttools5-dev-tools
,但我收到以下错误消息:
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.7' not found
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5' not found
/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5: version `Qt_5' not found
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5: version `Qt_5' not found
我也试过把一些环境变量改成LD_LIBRARY_PATH
和DYLD_LIBRARY_PATH
,结果没成功!
你有什么建议?
当您构建应用程序时,您构建的是 Qt5 的哪个版本?您可以通过查看当前选择的工具包在 QtCreator 中看到这一点:
如果您刚刚从二进制文件安装了 QtCreator,它会附带它自己的一组 Qt5 共享库,您的应用程序是 link反对,但是您的这些库的 OS' 版本(从 apt-get 和类似软件安装的)可能不匹配。
当您尝试 运行 在 QtCreator 之外独立运行应用程序时,它可能会尝试 link 针对 OS 版本的库,这些库通常要旧得多。
有很多方法可以解决这个问题。如果您不喜欢最新版本的 Qt,一种方法是首选,它只是构建 OS 提供的 Qt 库。您可以通过创建一个新工具包来完成此操作,该工具包指定按照 this 程序针对 OS' 库构建。
另一种方法是将您从 QtCreator 中使用的共享库与应用程序一起发送,这样它们将覆盖 OS 的共享库。通常只需将它们放入与可执行文件相同的文件夹中即可,因为它们会在 /usr/lib/whatever
等
下的文件夹之前找到
另一种方法是构建您自己的 Qt 静态版本,并 link 使用它。这有一些好处和一些缺点。这是一个进阶话题,就不细说了(大家可以看here)。但在这种情况下,Qt 库内置于您的应用程序中,不会依赖于任何外部 Qt 库版本。
我想 运行 一个基于 Qt5 共享对象的应用程序。
尽管我已经 apt install
编辑了 qt5-default
、qttools5-dev
和 qttools5-dev-tools
,但我收到以下错误消息:
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.7' not found
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5' not found
/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5: version `Qt_5' not found
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5: version `Qt_5' not found
我也试过把一些环境变量改成LD_LIBRARY_PATH
和DYLD_LIBRARY_PATH
,结果没成功!
你有什么建议?
当您构建应用程序时,您构建的是 Qt5 的哪个版本?您可以通过查看当前选择的工具包在 QtCreator 中看到这一点:
如果您刚刚从二进制文件安装了 QtCreator,它会附带它自己的一组 Qt5 共享库,您的应用程序是 link反对,但是您的这些库的 OS' 版本(从 apt-get 和类似软件安装的)可能不匹配。
当您尝试 运行 在 QtCreator 之外独立运行应用程序时,它可能会尝试 link 针对 OS 版本的库,这些库通常要旧得多。
有很多方法可以解决这个问题。如果您不喜欢最新版本的 Qt,一种方法是首选,它只是构建 OS 提供的 Qt 库。您可以通过创建一个新工具包来完成此操作,该工具包指定按照 this 程序针对 OS' 库构建。
另一种方法是将您从 QtCreator 中使用的共享库与应用程序一起发送,这样它们将覆盖 OS 的共享库。通常只需将它们放入与可执行文件相同的文件夹中即可,因为它们会在 /usr/lib/whatever
等
另一种方法是构建您自己的 Qt 静态版本,并 link 使用它。这有一些好处和一些缺点。这是一个进阶话题,就不细说了(大家可以看here)。但在这种情况下,Qt 库内置于您的应用程序中,不会依赖于任何外部 Qt 库版本。