分发使用 wxWidgets 的 C++ Linux 应用程序的选项
Options for distributing a C++ Linux application that uses wxWidgets
我正在开发一个使用 wxWidgets
的 C++ Linux 应用程序,需要作为已编译的二进制应用程序分发。项目负责人已指定我们要包括应用程序的所有依赖项,以便最终用户不需要安装任何东西到 运行 应用程序,前提是他们已经安装了标准系统组件(libc
, ETC)。我认为这个要求是最终用户要求的。我知道这不是您可能认为的 Linux 应用程序的 "normal" 分发过程。
对于本身没有很多依赖项的简单库,这不是问题。但是对于 wxWidgets
,我 运行 遇到 webkitgtk
的问题,这是 WebView
class(在应用程序中使用)所必需的。 webkitgtk
本身有一些依赖,可能有自己的依赖等等。基本上,通过尝试将所有内容都包含在应用程序中,看起来我会打开一个真正的蠕虫罐头,并且该项目的更高级开发人员似乎同意。
所以我想知道,分发此类应用程序有哪些选择?我已经尝试搜索有关此的信息,并且普遍的意见似乎是让最终用户安装 wxWidgets
。这些是我遇到的选项:
- 按照项目负责人的要求将所有依赖项编译为共享库。这样做的缺点是需要担心很多库,这会导致严重的膨胀。
- 要求最终用户安装
wxWidgets
(在 GTK
和 webkitgtk
之上)。这里的缺点是用户必须安装多个依赖项,如果他们没有在他们的包管理器中使用上述适当版本的分发版,这对他们来说可能是一个真正的麻烦。这也意味着我们无法提供特别要求的东西。
- 要求最终用户安装
GTK
和 webkitgtk
,而不是 wxWidgets
。与上述相同的缺点,但依赖性更少。另一个缺点是,如果安装的依赖项版本与用于构建打包的 wxWidgets
库的版本不同,则可能存在版本兼容性问题。
我对这些不同选择的优缺点的评估是否正确?有没有我遗漏的选项?
谢谢!
大卫,
最好的解决方案可能是要求用户安装 X11、GTK+{2,3} 和 WebKit-GTK。
wxWidgets可以与应用程序静态链接。
您可以要求您的用户拥有至少版本 X.Y.Z 的 WebKit-GTK,并且应该满足要求。将 WebKit-GTK 与其所有依赖项集成在一起,尤其是因为对 GTK+ 本身存在依赖性,这将非常困难。所以如果你走这条路,你会被搞砸的。
作为 linux 用户,我投票赞成通过包管理器手动安装依赖项。这并不难,如果您提供包(不仅仅是二进制文件),甚至可以自动完成。携带运行时 可能 会导致问题(例如 Debian 上的 Steam)。另一种选择是提供两种风格:全包式和依赖性要求。
我正在开发一个使用 wxWidgets
的 C++ Linux 应用程序,需要作为已编译的二进制应用程序分发。项目负责人已指定我们要包括应用程序的所有依赖项,以便最终用户不需要安装任何东西到 运行 应用程序,前提是他们已经安装了标准系统组件(libc
, ETC)。我认为这个要求是最终用户要求的。我知道这不是您可能认为的 Linux 应用程序的 "normal" 分发过程。
对于本身没有很多依赖项的简单库,这不是问题。但是对于 wxWidgets
,我 运行 遇到 webkitgtk
的问题,这是 WebView
class(在应用程序中使用)所必需的。 webkitgtk
本身有一些依赖,可能有自己的依赖等等。基本上,通过尝试将所有内容都包含在应用程序中,看起来我会打开一个真正的蠕虫罐头,并且该项目的更高级开发人员似乎同意。
所以我想知道,分发此类应用程序有哪些选择?我已经尝试搜索有关此的信息,并且普遍的意见似乎是让最终用户安装 wxWidgets
。这些是我遇到的选项:
- 按照项目负责人的要求将所有依赖项编译为共享库。这样做的缺点是需要担心很多库,这会导致严重的膨胀。
- 要求最终用户安装
wxWidgets
(在GTK
和webkitgtk
之上)。这里的缺点是用户必须安装多个依赖项,如果他们没有在他们的包管理器中使用上述适当版本的分发版,这对他们来说可能是一个真正的麻烦。这也意味着我们无法提供特别要求的东西。 - 要求最终用户安装
GTK
和webkitgtk
,而不是wxWidgets
。与上述相同的缺点,但依赖性更少。另一个缺点是,如果安装的依赖项版本与用于构建打包的wxWidgets
库的版本不同,则可能存在版本兼容性问题。
我对这些不同选择的优缺点的评估是否正确?有没有我遗漏的选项?
谢谢!
大卫, 最好的解决方案可能是要求用户安装 X11、GTK+{2,3} 和 WebKit-GTK。 wxWidgets可以与应用程序静态链接。
您可以要求您的用户拥有至少版本 X.Y.Z 的 WebKit-GTK,并且应该满足要求。将 WebKit-GTK 与其所有依赖项集成在一起,尤其是因为对 GTK+ 本身存在依赖性,这将非常困难。所以如果你走这条路,你会被搞砸的。
作为 linux 用户,我投票赞成通过包管理器手动安装依赖项。这并不难,如果您提供包(不仅仅是二进制文件),甚至可以自动完成。携带运行时 可能 会导致问题(例如 Debian 上的 Steam)。另一种选择是提供两种风格:全包式和依赖性要求。