发布使用wxWidgets的C++ Linux应用程序的选项

问题描述:

我正在研究使用wxWidgets并需要作为已编译的二进制应用程序进行分发的C++ Linux应用程序。项目主管已经指定我们要包含应用程序的所有依赖关系,以便最终用户不需要安装任何东西来运行应用程序,只要他们已经安装了标准系统组件(libc等)。我认为这个要求是最终用户要求的。我知道这不是您可能认为是Linux应用程序的“正常”分发过程。发布使用wxWidgets的C++ Linux应用程序的选项

对于自己没有很多依赖关系的简单库,这不是问题。但是对于wxWidgets我遇到了类(在应用程序中使用)需要webkitgtk的问题。 webkitgtk本身有很多依赖关系,可能有自己的依赖关系,依此类推。基本上,我想通过在应用程序中包含所有东西来打开真正的蠕虫病毒库,而项目中更高级的开发人员似乎也同意这一点。

所以我想知道,我分配这样的应用程序有什么选择?我试过寻找关于这方面的信息,而流行的看法似乎是让最终用户安装wxWidgets。这些是我遇到的选项:

  • 将项目领导需要的所有依赖项编译为共享库。这样做的缺点是有许多库需要担心,这会导致显着的膨胀。
  • 要求最终用户安装wxWidgets(在GTKwebkitgtk之上)。这里的缺点是用户必须安装多个依赖关系,如果他们不在包管理器中的上述合适版本的发行版上,这对他们来说可能是一件麻烦事。这也意味着我们不能提供特别要求的东西。
  • 要求安装最终用户GTKwebkitgtk,但不要安装wxWidgets。与上述相同,但依赖性较少。另一个缺点是,如果安装了不同版本的依赖关系,那么可能会存在版本兼容性问题,这与用于构建打包的wxWidgets库的版本相关。

我是否正确评估了这些不同选项的优缺点?有没有我错过的选项?

谢谢!

David, 最好的解决方案可能是要求用户安装X11,GTK + {2,3}和WebKit-GTK。 wxWidgets可以静态链接到应用程序。

您可以要求用户使WebKit-GTK的版本至少为X.Y.Z,并且应该满足要求。集成WebKit-GTK及其所有依赖项,特别是因为依赖于GTK +本身将非常困难。所以,如果你走这条路线,你会被拧紧。

作为Linux用户我投票通过包管理器手动依赖安装。这并不难,甚至可以自动完成,如果你提供包(不只是二进制)。运行运行时可能会导致问题(例如Debian上的Steam)。另一种选择是提供两种风格:全包和依赖性要求。