You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM64 Ubuntu20.04 Xwayland下Qt Wayland-EGL报错崩溃求助

解决ARM64 Ubuntu20.04下Qt Wayland-EGL后端崩溃及EGL不可用问题

针对ARM64 Ubuntu20.04 Xwayland环境下,Qt 5.15.2应用使用wayland-egl后端崩溃、wayland后端报"EGL not available"的问题,可按以下步骤排查解决:

1. 强制配置Wayland环境变量

Gnome桌面默认会忽略XDG_SESSION_TYPE=wayland,需明确设置环境变量强制启用Wayland-EGL:

export QT_QPA_PLATFORM=wayland-egl
export XDG_SESSION_TYPE=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 # 可选,规避窗口装饰相关警告

设置后直接启动程序:

./quicknanobrowser

2. 确认EGL/GLES2库加载路径

ARM64架构下mesa库可能存在路径问题,导致Qt无法找到EGL库:

  1. 查找系统中的EGL/GLES2库位置:
find /usr/lib/aarch64-linux-gnu -name "libEGL.so*" -o -name "libGLESv2.so*"
  1. 将找到的路径(如/usr/lib/aarch64-linux-gnu/mesa)添加到动态库加载路径:
export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu/mesa:$LD_LIBRARY_PATH

再次启动程序验证。

3. 重新编译Qt并明确指定EGL依赖

若Qt编译时未正确关联系统EGL库,需重新配置编译:

# 清理原有编译文件
make distclean
# 配置时明确指定OpenGL ES2、Wayland及EGL路径
./configure --opengl es2 --wayland --wayland-egl --eglfs \
            -I/usr/include/aarch64-linux-gnu \
            -L/usr/lib/aarch64-linux-gnu/mesa \
            # 保留你之前的其他配置参数
make -j$(nproc)
sudo make install

重新编译quicknanobrowser后测试。

4. 调整QtWebEngine的OpenGL初始化逻辑

错误日志显示WebEngine上下文初始化失败,需在代码中提前设置OpenGL格式并初始化WebEngine:
修改main.cpp:

#include <QtWebEngine>
#include <QSurfaceFormat>
#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    // 提前设置匹配要求的OpenGL ES2格式
    QSurfaceFormat format;
    format.setRenderableType(QSurfaceFormat::OpenGLES);
    format.setVersion(2, 0);
    format.setStencilBufferSize(8);
    QSurfaceFormat::setDefaultFormat(format);

    // 先初始化QtWebEngine
    QtWebEngine::initialize();

    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;
    const QUrl url(QStringLiteral("qrc:/main.qml"));
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
                     &app, [url](QObject *obj, const QUrl &objUrl) {
        if (!obj && url == objUrl)
            QCoreApplication::exit(-1);
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();
}

重新编译程序后运行。

5. 升级系统Mesa库

Ubuntu20.04默认Mesa版本可能存在ARM64下的EGL兼容问题,升级到最新可用版本:

sudo apt update && sudo apt upgrade libgl1-mesa-glx libegl1-mesa libgles2-mesa mesa-utils

内容的提问来源于stack exchange,提问作者Eric0039

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:12:06