1. 搭建Wayland开发环境

搭建Wayland开发环境 学习卡片

任务说明

在车载Linux系统(以Ubuntu 22.04 LTS为参考)上安装Wayland开发所需的库与工具,配置环境变量,并启动Weston合成器验证环境可用。完成后应能在Weston终端中运行Wayland客户端程序。

环境依赖

  • 操作系统:Ubuntu 22.04 LTS(x86_64或aarch64)
  • 权限:sudo权限
  • 网络:可访问Ubuntu软件源

安装步骤

执行以下命令安装Wayland开发库、Weston合成器及构建工具:

sudo apt update
sudo apt install -y weston wayland-protocols libwayland-dev libwayland-bin \
    libwayland-client++0 libwayland-cursor++0 libwayland-egl1 \
    meson ninja-build pkg-config wayland-scanner++

配置环境变量

将以下内容追加到 ~/.bashrc,使Wayland客户端能找到运行时目录:

export XDG_RUNTIME_DIR=/run/user/$(id -u)
export WAYLAND_DISPLAY=wayland-1

执行 source ~/.bashrc 使配置生效。

验证Weston运行

在无图形界面的终端中启动Weston(若已有桌面环境,请切换到TTY终端执行):

weston --backend=headless-backend.so --socket=wayland-1

Weston启动后,另开一个终端,检查Wayland socket是否存在:

ls -la $XDG_RUNTIME_DIR/wayland-1

预期输出:显示socket文件 wayland-1,权限为 srwxrwxrwx。

验证客户端连接

在第二个终端中运行Weston自带的客户端测试程序:

weston-simple-shm

若环境配置正确,Weston窗口中会显示一个旋转的彩色方块。按 Ctrl+C 退出测试程序。

通过条件

  • Weston进程无报错持续运行
  • wayland-1 socket文件存在且可访问
  • weston-simple-shm 客户端成功连接并显示图形

常见问题

  • XDG_RUNTIME_DIR未设置:Weston启动报错 fatal: could not create wayland socket,确认已执行 source ~/.bashrc 或手动export。
  • 权限不足:若socket创建失败,检查 /run/user/$(id -u) 目录存在且属主为当前用户,必要时执行 sudo chmod 700 /run/user/$(id -u)。
  • headless后端无输出:若需在开发板上验证,可改用 weston --backend=drm-backend.so(需DRM设备权限)。

环境验证脚本

以下脚本可一键验证环境是否就绪,保存为 check_wayland_env.sh 并执行 bash check_wayland_env.sh:

#!/bin/bash
echo "=== Wayland环境检查 ==="
pkg-config --exists wayland-client && echo "[OK] wayland-client 开发库" || echo "[FAIL] wayland-client 未安装"
pkg-config --exists wayland-server && echo "[OK] wayland-server 开发库" || echo "[FAIL] wayland-server 未安装"
which weston >/dev/null && echo "[OK] weston 已安装" || echo "[FAIL] weston 未安装"
which wayland-scanner >/dev/null && echo "[OK] wayland-scanner 已安装" || echo "[FAIL] wayland-scanner 未安装"
echo "XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR"
echo "WAYLAND_DISPLAY=$WAYLAND_DISPLAY"
echo "=== 检查完成 ==="

所有检查项输出 [OK] 且环境变量非空,即表示开发环境配置完成。