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

时间:2017-04-20 11:49:33

标签: c++ linux qt packaging

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

2 个答案:

答案 0 :(得分:3)

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

  

/!\您必须使用与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: thibDev <mail@mail.com>
Homepage: https://github.com/thibDev
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生成数据包。

答案 1 :(得分:1)

您正在寻找的正是您所说的内容,它被称为“部署”和Qt wiki can help you out

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