我正在尝试编译一个使用Qt 5.5的应用程序(Qt安装程序框架),以便生成的(静态链接的)二进制文件在旧的Linux系统上工作,如RedHat 5,甚至可能是RedHat 4。
我的理解是,为了生成在特定Linux发行版上运行的二进制文件,我应该在具有兼容(即足够旧)glibc版本的系统上构建它们,而glibc版本似乎又依赖于某些Linux内核版本(对于系统调用?)。文档建议通过配置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。
您可能能够在这些系统上编译xcb,然后使用该xcb库构建Qt,并将其与应用程序一起交付。如果我理解正确:
由于协议是标准化的,因此使用任何实现的客户端的Xlib可以与任何X服务器进行通信(课程)。
在本XCB教程中,XCB客户端仍然可以与任何X服务器进行通信,因为底层协议没有改变。但你必须做一些实验。。。