【发布时间】:2016-10-14 06:40:57
【问题描述】:
我正在开发一个使用 wxWidgets 的 C++ Linux 应用程序,并且需要作为已编译的二进制应用程序分发。项目负责人已指定我们将包含应用程序的所有依赖项,以便最终用户无需安装任何东西即可运行应用程序,前提是他们已经安装了标准系统组件(libc 等)。我认为这个要求是最终用户要求的。我知道这不是您可能认为的 Linux 应用程序的“正常”分发过程。
对于本身没有很多依赖项的简单库,这不是问题。但是对于wxWidgets,我遇到了webkitgtk 的问题,这是WebView 类(在应用程序中使用)所必需的。 webkitgtk本身有很多依赖,可能有自己的依赖等等。基本上,通过尝试将所有内容包含在应用程序中,看起来我会打开一个真正的蠕虫罐头,并且该项目中更资深的开发人员似乎同意。
所以我想知道,分发这样的应用程序有哪些选择?我已经尝试搜索有关此的信息,普遍的观点似乎是让最终用户安装wxWidgets。这些是我遇到的选项:
- 按照项目负责人的要求将所有依赖项编译为共享库。这样做的缺点是需要担心很多库,这会导致严重的膨胀。
- 要求最终用户安装
wxWidgets(在GTK和webkitgtk之上)。这里的缺点是用户必须安装多个依赖项,如果他们不在包管理器中具有上述适当版本的发行版上,这对他们来说可能是一个真正的麻烦。这也意味着我们无法提供特别要求的东西。 - 要求最终用户安装
GTK和webkitgtk,但不安装wxWidgets。与上述相同的缺点,但依赖项更少。另一个缺点是,如果安装的依赖项版本与用于构建打包的wxWidgets库的版本不同,则可能存在版本兼容性问题。
我对这些不同选项的优缺点的评估是否正确?有没有我遗漏的选项?
谢谢!
【问题讨论】:
标签: c++ linux dependencies wxwidgets