分发C++;使用wxWidgets的Linux应用程序 我正在研究一个使用 WxWistGe> /Cuff>的C++ Linux应用程序,需要作为编译的二进制应用程序来分发。项目负责人已指定,我们将包括应用程序的所有依赖项,以便最终用户不需要安装任何东西来运行应用程序,前提是他们已经安装了标准系统组件(libc,等等)。我认为这个要求是最终用户要求的。我知道,这并不是Linux应用程序的“正常”分布过程。

分发C++;使用wxWidgets的Linux应用程序 我正在研究一个使用 WxWistGe> /Cuff>的C++ Linux应用程序,需要作为编译的二进制应用程序来分发。项目负责人已指定,我们将包括应用程序的所有依赖项,以便最终用户不需要安装任何东西来运行应用程序,前提是他们已经安装了标准系统组件(libc,等等)。我认为这个要求是最终用户要求的。我知道,这并不是Linux应用程序的“正常”分布过程。,c++,linux,dependencies,wxwidgets,C++,Linux,Dependencies,Wxwidgets,对于本身没有太多依赖项的简单库,这不是问题。但是对于wxWidgets我遇到了webkitgtk的问题,这是WebView类(在应用程序中使用)所必需的webkitgtk本身有许多依赖项,它们可能有自己的依赖项,依此类推。基本上,通过尝试将所有内容都包含在应用程序中,我似乎打开了一个真正的蠕虫罐头,项目中更高级的开发人员似乎也同意这一点 所以我想知道,我发布这样一个应用程序的选择是什么?我试着搜索有关这方面的信息,主流观点似乎是让最终用户安装wxWidgets。以下是我遇到的选项: 根据项目负

对于本身没有太多依赖项的简单库,这不是问题。但是对于
wxWidgets
我遇到了
webkitgtk
的问题,这是
WebView
类(在应用程序中使用)所必需的
webkitgtk
本身有许多依赖项,它们可能有自己的依赖项,依此类推。基本上,通过尝试将所有内容都包含在应用程序中,我似乎打开了一个真正的蠕虫罐头,项目中更高级的开发人员似乎也同意这一点

所以我想知道,我发布这样一个应用程序的选择是什么?我试着搜索有关这方面的信息,主流观点似乎是让最终用户安装
wxWidgets
。以下是我遇到的选项:

  • 根据项目负责人的需要,将所有依赖项编译为共享库。这样做的缺点是有很多库需要担心,这将导致大量的膨胀
  • 要求最终用户安装
    wxWidgets
    (在
    GTK
    webkitgtk
    之上)。这里的缺点是,用户必须安装多个依赖项,如果他们不在包管理器中具有上述相应版本的发行版上,这对他们来说可能是一个真正的麻烦。这也意味着我们不能提供特别要求的东西
  • 要求最终用户安装了
    GTK
    webkitgtk
    ,但不安装
    wxWidgets
    。与上面相同的缺点,但依赖性较少。另一个缺点是,如果安装的依赖项的版本与用于构建打包的
    wxWidgets
    库的版本不同,则可能存在版本兼容性问题
我对这些不同选择的利弊的评估正确吗?有没有我错过的选择

谢谢

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


您可以要求您的用户拥有一个WebKit GTK,其版本至少为X.Y.Z,并且应满足要求。将WebKit GTK与其所有依赖项集成在一起,特别是因为存在对GTK+本身的依赖,这将非常困难。所以,如果你走这条路,你会被搞砸的。

作为linux用户,我投票赞成通过package manager手动安装依赖项。这并不难,如果您提供包(不仅仅是二进制),甚至可以自动完成。携带运行时可能会导致问题(例如Debian上的蒸汽)。另一种选择是提供两种风格:包罗万象和依赖性