我有一个用纯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
并且根据我的理解,这不是一个可以忽略的警告。我已经厌倦了仅与libgcc
和libstdc++
进行静态链接,我在一个干净的CentOS 7安装上复制了其他缺少的库 - libXau.so.6
,libXdmcp.so.6
和libxcb.so.1
并尝试在那里运行程序,但这给了我一个分段错误;可能是因为系统是64位而不是我编译应用程序的平台?
答案 0 :(得分:1)
我的建议是提供两个版本:一个不受支持的,完全静态的版本,可以在任何地方使用星号工作,如果它是商业产品,那么你无法支持它。人们会试着在他们的冰箱上运行它,我没骗你。官方支持的版本必须仅适用于特定的平台,并且您必须拥有运行这些平台的VM /测试目标,以及构建和测试的位置。