前置條件
更新apt數(shù)據(jù)庫,確保獲取到最新軟件庫
sudo apt-get update
安裝依賴庫
https://doc.qt.io/qt-5/linux-requirements.html#platform-plugin-dependencies
X11依賴
sudo apt-get install libfontconfig1-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install libx11-dev
sudo apt-get install libx11-xcb-dev
sudo apt-get install libxext-dev
sudo apt-get install libxfixes-dev
sudo apt-get install libxi-dev
sudo apt-get install libxrender-dev
sudo apt-get install libxcb1-dev
sudo apt-get install libxcb-glx0-dev
sudo apt-get install libxcb-keysyms1-dev
sudo apt-get install libxcb-image0-dev
sudo apt-get install libxcb-shm0-dev
sudo apt-get install libxcb-icccm4-dev
sudo apt-get install libxcb-sync-dev
sudo apt-get install libxcb-xfixes0-dev
sudo apt-get install libxcb-shape0-dev
sudo apt-get install libxcb-randr0-dev
sudo apt-get install libxcb-render-util0-dev
sudo apt-get install libxcb-xinerama0-dev
sudo apt-get install libxcb-composite0-dev
sudo apt-get install libxkbcommon-dev
sudo apt-get install libxkbcommon-x11-dev
安裝opengl庫
sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libegl1-mesa-dev
sudo apt-get install freeglut3-dev
安裝OpenGL ES支持
sudo apt-get install -y mesa-common-dev
安裝WebEngine依賴庫
#webengine
sudo apt-get install python2
#requires pkg-config to detect most of its dependencies.
sudo apt-get install -y pkg-config
sudo apt-get install libdbus-1-dev
#If Qt was configured for xcb,the following pkg-config files are also required:
安裝GTK
sudo apt-get install -y libgtk2.0-dev libgtk-3-dev
安裝常用庫
sudo apt-get install -y libudev-dev libasound2-dev libudev-dev libudev1
安裝多媒體庫
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libx264-dev libopencv-dev
安裝網(wǎng)絡(luò)庫
sudo apt-get install -y libssl-dev
安裝Perl
sudo apt-get install -y perl
安裝ICU庫
如果你需要ICU支持(用于國際化等),可以安裝ICU庫
sudo apt-get install -y libicu-dev
安裝Wayland相關(guān)庫
sudo apt-get install -y libwayland-dev
安裝QtPDF支持庫
sudo apt-get install gperf
sudo apt-get install bison
sudo apt-get install flex
xcb選項
-bundled-xcb-xinput 通常出現(xiàn)在與Qt編譯相關(guān)的上下文中,特別是在使用Qt的源代碼進(jìn)行自定義編譯時。這個選項與Qt的構(gòu)建配置有關(guān),特別是在涉及XCB(X C Binding)和XInput擴(kuò)展時。
解釋
- XCB (X C Binding):?XCB 是一個低級別的C語言綁定庫,用于與X Window System進(jìn)行通信。它是Xlib的一個替代品,提供了更高效和更現(xiàn)代的API。?在Qt中,XCB是用于實現(xiàn)Qt圖形系統(tǒng)與X Window System交互的基礎(chǔ)。
- XInput:?XInput 是X Window System的一個擴(kuò)展,用于增強(qiáng)輸入設(shè)備的支持,例如多點觸摸屏、軌跡球等。?Qt需要支持XInput擴(kuò)展來處理這些設(shè)備的輸入事件。
- -bundled:?當(dāng)使用-bundled選項時,意味著Qt將使用捆綁(bundled)的庫版本,而不是系統(tǒng)提供的版本。?這樣做可以確保Qt使用的是經(jīng)過驗證的庫版本,避免與系統(tǒng)庫版本不兼容的問題。
使用場景:
當(dāng)你在編譯Qt時,使用-bundled-xcb-xinput選項意味著Qt將使用捆綁的XCB和XInput庫,而不是系統(tǒng)上可能已經(jīng)安裝的版本。這通常在以下情況下是有用的:
- 解決依賴問題:如果你的系統(tǒng)上的XCB或XInput版本與Qt期望的版本不一致,可能會導(dǎo)致編譯失敗或運行時出現(xiàn)問題。
- 一致性:使用捆綁的庫可以確保Qt的所有依賴庫版本一致,從而減少因版本差異帶來的問題。
- 獨立性:使用捆綁的庫可以讓Qt的安裝更加獨立,不依賴于系統(tǒng)上的其他庫。
示例:假設(shè)你正在從源代碼編譯Qt,并且想要使用捆綁的XCB和XInput庫,你可以使用以下命令:./configure -release -opensource -confirm-license -prefix /opt/qt5 -bundled-xcb-xinput
make
sudo make install
sh這條命令會告訴Qt的configure腳本使用捆綁的XCB和XInput庫,并進(jìn)行編譯和安裝??偨Y(jié)-bundled-xcb-xinput是一個用于Qt編譯配置的選項,用于指定使用捆綁的XCB和XInput庫。這樣做可以確保Qt使用的是經(jīng)過驗證的庫版本,從而避免與系統(tǒng)庫版本不兼容的問題,并提高Qt安裝的一致性和獨立性。
編譯Qt
- 解壓Qt源碼文件,進(jìn)入源碼目錄。
tar -xvf qt_src_5.xx.x.tar.xz
- 進(jìn)入源碼根目錄
cd qt_src_5.xx.x
- 運行configure腳本
./configure -qt-zlib -qt-freetype -qt-libpng -qt-libjpeg -qt-pcre -openssl-linked -bundled-xcb-xinput -release -prefix /opt/qt5
可選項:
- -qt-zlib使用Qt自帶的庫,而不是系統(tǒng)的。其余-qt-xxx同理。
- -qt-freetype,使用Qt的字體后,將獲取不到系統(tǒng)內(nèi)置字體。
- -release 編譯release版本
- -prefix指定安裝路徑
- -openssl-linked,直接連接openssl,這意味著Qt在編譯時會將OpenSSL庫的二進(jìn)制文件直接嵌入到Qt庫中,這樣Qt應(yīng)用程序就可以直接使用這些OpenSSL庫的功能,而不需要依賴系統(tǒng)上安裝的OpenSSL庫
- 執(zhí)行make,開始編譯,-j選項啟用多核編譯,加快編譯速度
make -j4
- 安裝,將Qt安裝到前面運行configure腳本時-prefix指定的目錄
make install