我正在尝试编译一个使用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。
答案 0 :(得分:1)
您可以在这些系统上编译xcb,然后使用该xcb库构建Qt并将其与您的应用程序一起发送。如果我理解正确的话:
由于协议是标准化的,因此客户端使用任何实现 XCB可以与任何X服务器通信(对于Xlib来说也是如此) 疗程)。
来自this XCB tutorial,xcb客户端仍会与任何X服务器通信,因为底层协议没有改变。但是你必须做一些试验......