如何使用在旧Linux系统(例如RedHat 4或RedHat 5)上运行的Qt 5.5构建软件?

时间:2015-10-27 08:38:09

标签: linux qt deployment qt5

我正在尝试编译一个使用Qt 5.5的应用程序(Qt Installer Framework),以便生成的(静态链接的)二进制文件可以在较旧的Linux系统(如RedHat 5或甚至RedHat 4)上运行。

我的理解是,为了生成在某些特定Linux发行版上运行的二进制文件,我应该在具有兼容(即足够旧)glibc版本的系统上构建它们,而这些版本似乎依赖于某些Linux内核版本(用于系统调用还是这样?)。 documentation建议通过

配置Qt构建
$ configure -prefix $PWD/qtbase -release -static -accessibility -qt-zlib -qt-libpng -qt-libjpeg -qt-xcb -qt-pcre -qt-freetype -no-glib -no-cups -no-sql-sqlite -no-qml-debug -no-opengl -no-egl -no-xinput -no-xinput2 -no-sm -no-icu -nomake examples -nomake tests -skip qtactiveqt -skip qtenginio -skip qtlocation -skip qtmultimedia -skip qtserialport -skip qtquick1 -skip qtquickcontrols -skip qtscript -skip qtsensors -skip qtwebkit -skip qtwebsockets -skip qtxmlpatterns

唉,即使禁用了这么多Qt组件,在非常老的Linux系统上构建Qt 5.5似乎也存在问题,因为依赖于某些xcb版本(如果我没记错的话,还是1.5或1.7)在RHEL6或更新版本上。

这让我想知道:是否有可能使用Qt 5.5构建软件,以便生成的二进制文件可以部署到较旧的Linux发行版(RedHat 4& 5在商业词中仍然有点流行)?如果是这样,我是否可能需要使用某些特定标志等配置Qt?对于它的价值,我不需要大部分的Qt功能。只是核心,小部件和QML(用于脚本),但没有WebKit或SQL。

1 个答案:

答案 0 :(得分:1)

您可以在这些系统上编译xcb,然后使用该xcb库构建Qt并将其与您的应用程序一起发送。如果我理解正确的话:

  

由于协议是标准化的,因此客户端使用任何实现   XCB可以与任何X服务器通信(对于Xlib来说也是如此)   疗程)。

来自this XCB tutorial,xcb客户端仍会与任何X服务器通信,因为底层协议没有改变。但是你必须做一些试验......