我是否必须将Qt库与我的软件包一起部署
Do I have to deploy Qt libraries together with my package?
我正在开发一个使用Qt的程序,应该在Ubuntu,Debian,CentOS和Fedora上运行。
据我了解,每个枚举的 Linux 发行版都有自己的 Qt 库,也提供了。
但是我正在从事的项目使用定制构建的Qt库来构建和部署。
有那么必要吗?
如果我让它使用系统Qt库,会出现什么陷阱?
将Qt二进制文件放在可执行文件旁边,因为您的应用程序是针对具有特定工具链的特定版本的Qt编译的。此外,不能保证目标Linux发行版具有使用相同的工具链编译的相同版本的Qt库。
如果未提供所有依赖库,则应用可能无法在某些系统上运行。
您应该将Qt .so文件放在可执行文件的发布版本上。这些是 libQtCore.so 的,libQtGui.so 的,可能是您使用过的其他模块。这些 so 文件位于 lib 文件夹或目录 "/usr/lib/i386-linux-gnu" 中已安装的 Qt 目录中。如果您使用的是插件,则应将其 so 文件放在二进制文件旁边的名为"plugins"的文件夹中。如果使用图标和图像,您应该将它们的文件(如 libqico.so 和 libqsvg.so)寄送到名为"imageformat"的文件夹中。
这个答案主要是为了给你一个起点,或者鼓励你尝试一下。
您应该尽可能针对最低的Qt版本进行构建。Qt承诺在库中向下兼容二进制(假设它们以兼容的方式配置,并且使用兼容的编译器和其他库)。
请注意,您可能还会遇到其他库版本(如 C 标准库)的问题。因此,您不仅应该使用旧的Qt,还应该在旧版本的Linux发行版上构建。
一旦你做了这些,同一个应用程序二进制文件很有可能在不同的 Linux 发行版和同一发行版的不同版本上工作。不过,使用您想要支持的所有发行版进行测试!
尽管如此,在当今虚拟机时代,您应该为每个受支持的发行版设置一个虚拟机并编译自定义包。没有运行 GUI 的服务器版本,只有开发包,应该只需要几千兆磁盘空间(使用动态虚拟磁盘),并且每个正在运行的 VM 需要不到一千兆的"额外"内存即可正常运行。你可以在每个虚拟机上设置类似 Jenkins slave 的东西,或者只是使用 ssh 之类的东西在每个 VM 中运行构建脚本。
- 如何使我的 sizeof sum 结构与空参数包一起工作
- 从C++调用 Python 并访问通过 Anaconda 安装的软件包
- 我正在尝试编写将 ASCII 转换为十进制、添加并转换回 ASCII 的软件
- 为什么操作系统正在更改我的数据包的指定传出端口
- 安装CMake后,我找不到带有"find_package"的软件包
- 如何在我的项目包中使用C 库GTSAM
- Eclipse CDT不确定的参考(通过mysys2下载的软件包)
- 是否可以仅通过编写 debian/rules 来编译两次并构建单独的软件包?
- 强制我的软件从特定位置使用DLL
- Qt安装程序框架 - 读取下载的软件包版本
- 在我的软件中实现数据同步的服务
- 如何告诉超级计算机上的C++编译器我的R包需要C++0x
- 为什么我在安装软件包中收到这样的错误消息
- 为什么我的凸包周长计算不起作用?
- 绕道:防止通过另一个软件杀死我的软件
- 我应该担心我的软件被反编译吗?
- 为什么__inbyte使我的软件崩溃
- 我的软件在大量分配后仍然使用一些内存
- 用于求解 C/C++ 中非线性反抛物偏微分方程的软件包
- 我是否必须将Qt库与我的软件包一起部署