如何在其他 linux 平台上部署带有所有 dll 文件的 Qt 应用程序?

How to deploy a Qt app with all dll files in other linux platform?

我在 linux os 中使用 Qt Creator 创建了一个网络浏览器。 我必须 运行 这个浏览器在另一个系统上也有 linux os。 而且我不想在其他系统中安装 Qt Creator。 我希望我的浏览器应该 运行 独立。 我使用 build 创建了浏览器,但是当我 运行 设置 .exe 文件时,它显示找不到 .dll 文件。 所以,我想知道如何将我的应用程序与库绑定。 谢谢

你要找的正是你标题所说的,它叫做"deploying"和Qt wiki can help you out

首先出现问题的原因是,当您在系统上构建应用程序时,它动态地 links 到 Qt .so 系统中特定的文件路径,那些显然在另一台计算机上丢失,因此动态 linker 会抛出错误。一种不为此使用工具的方法是实际分发必要的 .so 文件和二进制文件,并为 linker 提供它们的路径,方法是在可执行文件中使用 RPATH 或环境变量。我提供的 link 中的工具应该可以为您创建包含可执行文件和库的捆绑包,link 用户可以在需要时将其组合。

要创建 .deb 包,您可以根据需要调整我的方法。

/!\ You have to build your program with a kit compatible with qt5-default

创建一个树,例如:

package_folder
|-DEBIAN
  |-control (a file)
  |-postinst (bash script)
|-opt
  |-your_binary (your app binary)
|-usr
  |-bin
  |-share
    |-application
      |-package_folder.desktop (to create a shortcut)

控制文件:

Package: regexp-testor
Version: 1.0
Section: devel
Priority: optional
Architecture: amd64
Depends: qt5-default
Maintainer: thibsc <mail@mail.com>
Homepage: https://github.com/thibsc
Description: RegExp testor
 RegExp testor is a regular expression testor like the rubular.com website.

postinst 脚本:

#!/bin/bash
echo "Create a symbolic link towards the binary"
sudo ln -s /opt/regexp_testor/regexp_testor /usr/bin
echo "Enjoy ;)"

package_folder.desktop 文件:

[Desktop Entry]
Version=1.0
Type=Application
Name=RegExp testor
GenericName=RegExp testor
Comment=A regular expression testor like the rubular.com website
Exec=/opt/regexp_testor/regexp_testor
Terminal=false
MimeType=text/plain;
Icon=regexp_testor_icon
Categories=Development;
StartupNotify=true

然后将您置于 package_folder 和 运行 sudo dpkg-deb --build package_folder 的级别,您应该有一个可以使用的 .deb 包。

编辑:
您也可以使用 debpac 来生成您的数据包。