在多个Linux发行版上部署Qt 5.5.1 C ++应用程序

时间:2015-12-18 20:00:11

标签: c++ linux qt deployment

我有一个用纯C ++和Qt 5.5.1编写的应用程序。它在GCC(Lubuntu 15.10 x86)和MSVC 14.0(Windows 8.1 x64)中编译良好,并且在这两个平台上都能正常工作。我现在想要分发它,以便它可以在其他Linux发行版上运行,而无需在那里重新编译它们。

我不完全确定如何实现这一目标; Qt docs page通常建议静态链接所有内容,但这不是大多数其他来源所说的(据我所知,与glibc静态链接是一个坏主意)。在任何情况下,我都无法真正链接所有静态,因为GCC抱怨Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking并且根据我的理解,这不是一个可以忽略的警告。我已经厌倦了仅与libgcclibstdc++进行静态链接,我在一个干净的CentOS 7安装上复制了其他缺少的库 - libXau.so.6libXdmcp.so.6libxcb.so.1并尝试在那里运行程序,但这给了我一个分段错误;可能是因为系统是64位而不是我编译应用程序的平台?

  • 如何以最常见配置可运行的形式分发应用程序?静态链接不是问题,因为无论如何都会释放源。
  • 最好是静态地还是动态地链接Qt(如果最大二进制可移植性是优先级的话)?
  • 我是否需要提供两个独立版本的二进制版本,32位和64位,或者32位版本是否足够?

1 个答案:

答案 0 :(得分:1)

我的建议是提供两个版本:一个不受支持的,完全静态的版本,可以在任何地方使用星号工作,如果它是商业产品,那么你无法支持它。人们会试着在他们的冰箱上运行它,我没骗你。官方支持的版本必须仅适用于特定的平台,并且您必须拥有运行这些平台的VM /测试目标,以及构建和测试的位置。