2015-10-27 30 views
0

我試圖編譯它使用Qt 5.5,使得所得(靜態鏈接)的二進制文件在舊的Linux系統如RedHat 5或工作的應用程序(Qt Installer Framework)甚至紅帽4.如何使用在舊版Linux系統(例如RedHat 4或RedHat 5)上運行的Qt 5.5構建軟件?

我的理解是爲了生成在某些特定的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

您可能可以在這些系統上編譯xcb,然後使用該xcb庫構建Qt並將其與您的應用程序一起發貨。如果我正確理解這一點:

由於協議是標準化的,在客戶端使用的XCB任何實施 可以與任何X服務器(同一發生爲Xlib中, 當然)交談。

來自this XCB tutorial,由於底層協議沒有改變,所以xcb客戶端仍然會與任何X服務器交談。但是你必須做一些試驗......

+0

這很有趣,至少有一些嘗試。我希望我可以做一個靜態構建,這樣我就不需要發佈一個單獨的共享對象。 –

+0

接受這一點 - 我做了一個靜態libxcb構建,然後修補Qt構建系統,使它使用'$ PKG_CONFIG --libs --static xcb'獲取libxcb的鏈接器標誌(即,我添加了「--static」 )。 –

相關問題