前置条件
更新apt数据库,确保获取到最新软件库
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
安装网络库
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相关库
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 通常出现在与Qt编译相关的上下文中,特别是在使用Qt的源代码进行自定义编译时。这个选项与Qt的构建配置有关,特别是在涉及XCB(X C Binding)和XInput扩展时。
解释
- XCB (X C Binding):•XCB 是一个低级别的C语言绑定库,用于与X Window System进行通信。它是Xlib的一个替代品,提供了更高效和更现代的API。•在Qt中,XCB是用于实现Qt图形系统与X Window System交互的基础。
- XInput:•XInput 是X Window System的一个扩展,用于增强输入设备的支持,例如多点触摸屏、轨迹球等。•Qt需要支持XInput扩展来处理这些设备的输入事件。
- -bundled:•当使用-bundled选项时,意味着Qt将使用捆绑(bundled)的库版本,而不是系统提供的版本。•这样做可以确保Qt使用的是经过验证的库版本,避免与系统库版本不兼容的问题。
使用场景:
当你在编译Qt时,使用-bundled-xcb-xinput选项意味着Qt将使用捆绑的XCB和XInput库,而不是系统上可能已经安装的版本。这通常在以下情况下是有用的:
- 解决依赖问题:如果你的系统上的XCB或XInput版本与Qt期望的版本不一致,可能会导致编译失败或运行时出现问题。
- 一致性:使用捆绑的库可以确保Qt的所有依赖库版本一致,从而减少因版本差异带来的问题。
- 独立性:使用捆绑的库可以让Qt的安装更加独立,不依赖于系统上的其他库。
示例:假设你正在从源代码编译Qt,并且想要使用捆绑的XCB和XInput库,你可以使用以下命令:./configure -release -opensource -confirm-license -prefix /opt/qt5 -bundled-xcb-xinput
make
sudo make install
sh这条命令会告诉Qt的configure脚本使用捆绑的XCB和XInput库,并进行编译和安装。总结-bundled-xcb-xinput是一个用于Qt编译配置的选项,用于指定使用捆绑的XCB和XInput库。这样做可以确保Qt使用的是经过验证的库版本,从而避免与系统库版本不兼容的问题,并提高Qt安装的一致性和独立性。
编译Qt
- 解压Qt源码文件,进入源码目录。
tar -xvf qt_src_5.xx.x.tar.xz
- 进入源码根目录
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自带的库,而不是系统的。其余-qt-xxx同理。
- -qt-freetype,使用Qt的字体后,将获取不到系统内置字体。
- -release 编译release版本
- -prefix指定安装路径
- -openssl-linked,直接连接openssl,这意味着Qt在编译时会将OpenSSL库的二进制文件直接嵌入到Qt库中,这样Qt应用程序就可以直接使用这些OpenSSL库的功能,而不需要依赖系统上安装的OpenSSL库
- 执行make,开始编译,-j选项启用多核编译,加快编译速度
make -j4
- 安装,将Qt安装到前面运行configure脚本时-prefix指定的目录
make install
网友评论