忧郁的大能猫
好奇的探索者,理性的思考者,踏实的行动者。
Table of Contents:
Qt WebEngine 编译依赖较多,首先安装基本开发工具和依赖库:
sudo apt update
sudo apt install -y build-essential perl python3 git cmake \
libgl1-mesa-dev libx11-dev libxext-dev libx11-xcb-dev libxcb1-dev \
libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev \
libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev \
libxcb-render-util0-dev libxcb-glx0-dev libxrender-dev libxkbcommon-dev \
libfontconfig1-dev libfreetype6-dev libdbus-1-dev libssl-dev \
libasound2-dev libpulse-dev libjpeg-dev libpng-dev libglib2.0-dev \
libatk1.0-dev libxcomposite-dev libxdamage-dev libxrandr-dev \
libdrm-dev bison flex gperf python3-pip ninja-build libnss3-dev \
libxslt1-dev说明:
-libnss3-dev、libxslt1-dev、ninja-build是 WebEngine 编译必备的。
- 其他是 Qt 基础模块和 OpenGL/X11 相关。
你可以从官方 Qt 仓库或档案下载源码:
wget https://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz
tar xf qt-everywhere-src-5.15.2.tar.xz
cd qt-everywhere-src-5.15.2Qt WebEngine 需要 Python3 和 Ninja 构建工具:
export PATH=/usr/bin:$PATH然后创建一个构建目录:
mkdir build
cd build使用 configure 配置 Qt
../configure -prefix /opt/Qt5.15.2 \
-opensource -confirm-license \
-nomake tests -nomake examples \
-opengl desktop \参数说明:
- -prefix :安装路径
- -opensource :开源版本
- -nomake tests/examples :不编译测试和示例,加快编译
- -opengl desktop :使用桌面 OpenGL
推荐使用 Ninja 或 Make:
make -j$(nproc)或如果你安装了 Ninja:
ninja编译完成后:
sudo make install或者:
sudo ninja install安装完成后,Qt 会在 /opt/Qt5.15.2 下。
为了使用刚编译的 Qt:
export PATH=/opt/Qt5.15.2/bin:$PATH
export LD_LIBRARY_PATH=/opt/Qt5.15.2/lib:$LD_LIBRARY_PATH可以加到 ~/.bashrc 或 ~/.zshrc,方便永久使用。
qmake -v输出应该类似:
QMake version 3.1
Using Qt version 5.15.2 in /opt/Qt5.15.2/lib
你现在遇到的错误:
ERROR: Unknown command line option '-webengine'
说明在 Qt 5.15.18 的源码里,configure 不再直接接受 -webengine 参数了。
从 Qt 5.15.x 后期版本开始,Qt WebEngine 被拆分成一个单独模块,不能像早期版本那样直接用 -webengine 启用。也就是说:
qtbase 等),然后在 单独的构建目录里编译 Qt WebEngine。-webengine 选项在 configure 中已经废弃,所以会报“Unknown command line option”。-webengine):cd ~/work/qt/qt-everywhere-src-5.15.18/build
../configure -prefix /opt/Qt5.15.18 \
-opensource -confirm-license \
-nomake tests -nomake examples \
-opengl desktop
make -j$(nproc)
sudo make installqtwebengine 子目录下,需要单独生成构建目录:cd ~/work/qt/qt-everywhere-src-5.15.18/qtwebengine
mkdir build-webengine
cd build-webengine
/opt/Qt5.15.18/bin/qmake .. # 使用你刚安装的 Qt qmake
make -j$(nproc)
sudo make install非常重要:Qt WebEngine 编译 Chromium,非常耗时间和内存(建议 16GB 内存以上)
内存不够会直接 OOM 崩溃。
在我的ubuntu虚拟机上因为OOM,gcc进程被杀掉,后来用make -j1 一点点编译,编了得有三四个小时
# 查看当前 swap 使用情况
swapon -s
# 停用swap
sudo swapoff /swapfile
# 重新创建swap
sudo rm /swapfile # 删除旧的
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 最后确认内存
free -h
你这次的问题已经非常清楚了:
Note: The following modules are not being compiled in this configuration:
webenginecore
webengine
webenginewidgets
WARNING: Nodejs is required to build QtWebEngine.
WARNING: QtWebEngine will not be built.
也就是说:QtWebEngine 根本没开始编译,因为少关键依赖,尤其是 nodejs(必须)和一些媒体库(可选)。
请先执行:
sudo apt update
sudo apt install -y nodejs npm ninja-build python3然后检查 nodejs 版本:
node -v必须 ≥ v10,如果太低,直接装官方 node:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejssudo apt install -y \
libnss3-dev libxss-dev libasound2-dev libx11-dev libx11-xcb-dev \
libxcomposite-dev libxrandr-dev libxdamage-dev libxtst-dev \
libdbus-1-dev libxt-dev libxfixes-dev libxext-dev libxrender-dev \
libjpeg-dev libpng-dev libcups2-dev libxslt1-dev \
libevent-dev libminizip-dev libwebp-dev libopus-dev \
libvpx-dev libsnappy-dev liblcms2-dev libharfbuzz-dev这些库会让 Optional system libraries 那一堆 从 no → yes,从而启用 webenginecore。
你当前路径正确:
~/work/qt/qt-everywhere-src-5.15.18/qtwebengine/build-webengine
先清理旧缓存:
rm -rf ./* # 清空 build-webengine 目录内容重新执行 qmake:
/opt/Qt5.15.18/bin/qmake ..如果输出里:
✅ webenginecore = yes
✅ webenginewidgets = yes
就成功了。
make -j$(nproc)sudo make installls /opt/Qt5.15.18/lib | grep WebEngine如果有:
libQt5WebEngine.so
libQt5WebEngineCore.so
libQt5WebEngineWidgets.so