一、编译前工作
1、普通版
上官网:https://download.qt.io下载和解压源码,例如:qt-everywhere-opensource-src-5.15.10.tar.xz
到目录/home/jaron/workspace/qt-everywhere-src-5.15.10
,创建构建目录,例如:/home/jaron/workspace/qt-5.15.10-build
,通过终端进入构建目录(注意: 在configure
后会在build
目录下自动生成一些源文件,进行make
时会找不到而报错,此时就不要创建构建目录了,直接在源码目录进行configure
和make
),输入命令(注意: 在执行命令前需要先安装OpenGL):
命令选项说明
./../qt-everywhere-src-5.15.10/configure \
-verbose \
-opensource \
-release \
-shared \
-confirm-license \
-make libs \
-c++std c++14 \
-xcb \
-xcb-xlib \
-bundled-xcb-xinput \
-nomake tests \
-nomake examples \
-prefix /opt/qt-5.15.10-ubuntu-x64
推荐: 这里指定了c++14
,使用g++ 5.4.0
进行编译,高于的话编译过程可能会出错。
说明: 如果要编译出libqxcb.so
,则最好增加选项:-xcb -xcb-xlib -bundled-xcb-xinput
,如果配置出现错误:
Feature 'xcb' was enabled, but the pre-condition 'features.thread && features.xkbcommon && libs.xcb' failed.
可以先安装再重新配置(重新配置要增加选项-recheck-all
):
apt-get install '^libxcb.*-dev'
apt-get install libx11-xcb-dev
apt-get install libglu1-mesa-dev
apt-get install libxrender-dev
apt-get install libxi-dev
apt-get install libxkbcommon-dev
apt-get install libxkbcommon-x11-dev
如果出现警告:
Could not find all necessary libraries for qpa-xcb support in QtWebEngine.
如果还是出现警告,则尝试安装下依赖再试试:
apt-get install libxss-dev
apt-get install libxxf86vm-dev
apt-get install libxkbfile-dev
apt-get install libxv-dev
注意: 编译过程中可能会报错,参考以下提前设置:
- qmutex_linux.cpp:multiple definition of ‘QBasicMutex::lockInternal(int)’
- qdbusmarshaller.cpp:(.text+0x0): `QDBusMarshaller::append(QString const&)'被多次定义
- src/client/qwayland-wayland.h: No such file or directory
-skip location
2、带QtMediaPlayer
编译Qt库时,会默认集成MediaPlayer,但是在执行配置后可能出现:
Qt Multimedia:
ALSA ....................