我如何在开发 Qt 应用程序的另一台电脑上运行它

我如何在开发 Qt 应用程序的另一台电脑上运行它

我只想提供可执行文件,或许让其他用户(也运行 ubuntu)下载 qt5 库(非开发版本)才能运行该应用程序。

我对编译 qt 的静态版本不感兴趣,只是为了使这个可执行文件自包含。

我继续检查ldd以获得似乎必要的特定库

sudo apt-get install libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5printsupport5

说我已经安装了最新版本。

应用程序仍然无法运行。出了什么问题?我应该获取哪些运行时库才能使可执行文件找到所有符号?

答案1

我相信有几种方法可以使用。我在下面列出了一种方法,这是我在评论中给出的部署文档中推荐的方法。

我在本例中使用了一个名为 HelloWorld 的标准新 Qt Widgets 应用程序项目,该项目已在发布模式下编译,生成的文件名为“HelloWorld”。本例还假设您使用的是 x64。

假设我们从名为 MyApp 的根文件夹开始,将“HelloWorld”可执行文件复制到其中。然后需要将以下库从 QtInstallationFolder/gcc_64/lib 复制到此文件夹:

  • 利比库数据
  • libicui18n
  • 利比库克
  • 库Qt5Core
  • 库Qt5DBus
  • 库Qt5Gui
  • libQt5Widgets
  • libQt5XcbQpa

另外,将以下库从 QtInstallationFolder/gcc_64/plugins/platforms 复制到 MyApp/platforms:

将以下内容复制并粘贴到文本编辑器中,然后将其保存到 MyApp 文件夹中作为 HelloWorld.sh:

#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`

dirname=`dirname $0`
tmp="${dirname#?}"

if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"

然后,您应该能够使用以下命令从应用程序根文件夹运行该应用程序:

./HelloWorld.sh

以上内容代表 GUI 应用程序所需的最少库。如果您将此方法用于应用程序,并且该应用程序使用了除上述库之外的任何其他库,您还需要将这些库复制到根 MyApp 文件夹。此外,当您创建 .sh 文件时,请使用应用程序的名称。

希望有所帮助。

答案2

您需要部署该应用程序,为此我使用了该实用程序 部署工具

您可以从安装github发布

或者

snapstore

sudo snap install cqtdeployer

您可以按如下方式使用:

cqtdeployer -bin myApp -qmake path/to/my/qmake -qmlDir path/to/my/qml/files/dir

并使用 sh 脚本运行应用程序

如果您要使用 snap 版本,请确保您拥有所有权限。

相关内容