树莓派上安装Weston
Raspbian包
编译依赖
固件
环境配置
pkg-config配置文件
Wayland库
libxkbcommon
Weston和示例应用
故障排除
找不到bcm_host.pc
编译错误: 未定义的`wl_egl_...引用
部分或整个界面 (图形)破损
显示器或电视黑屏, 丢失信号
窗口或图像闪烁
由于硬件异常导致程序挂掉
本文将指导你把Weston装入树莓派. 所有的命令行和编译操作都直接在派上完成. 用Raspbian作为操作系统的时候需要以用户'pi'来运行Weston, 这是因为在本地登录(非ssh)该用户时Raspbian才允许输入设备接入.
如果你只是想试试Weston, 并不想手动编译它, 可以用下面的包.
Raspbian包对于Raspbian, 有预编译好的Wayland及Weston包.
在/etc/apt/sources.list文件中添加一行:
deb wheezy rpi接着运行:
sudo apt-get update sudo apt-get install weston这会安装一个名为weston-launch的脚本 (并非真实启动程序), 它会为你自动设置XDG_RUNTIME_DIR, 并运行weston. 想要运行Weston十分简单:
weston-launch无需手动设置环境变量. 但是下面提及的固件仍然需要检查.
编译依赖如果你使用的是Raspbian, 请安装编辑依赖:
$ sudo apt-get install build-essential automake libtool bison flex \ xutils-dev libcairo2-dev libffi-dev libmtdev-dev libjpeg-dev \ libudev-dev libxcb-xfixes0-dev libxcursor-dev libraspberrypi-dev 固件你需要更新到最新的树莓派固件, 以便你能获得rpi-update工具. 太旧的固件会导致树莓派rpi-backend出现故障. 执行rpi-update会覆盖一些raspbian包安装的文件, 比如libraspberrypi-dev. 你先不要rpi-update, 直接运行Weston, 如果出现了图像问题, 再执行它, 看看能否解决问题.
你可能需要在/boot/config.txt文件中调整以下选项:
gpu_mem=128
为VideoCore保留多少内存, 例如: framebuffer, GL纹理贴图, Dispmanx资源.
dispmanx_offline=1
固件将切换为离线合成Dispmanx元素. 通常情况下合成都是在线完成的, 但是在scanout时无法处理过多的元素. 在开启离线后, 会分配一个关屏缓冲区来合成. 当屏幕复杂度(元素的数量和尺寸)过高, 将会在缓冲区中离线合成. 强烈推荐开启!
环境配置我们将安装到树莓派用户的home目录下.
export WLD="$HOME/local" export PATH="$WLD/bin:$PATH" export LD_LIBRARY_PATH="$WLD/lib:/opt/vc/lib" export PKG_CONFIG_PATH="$WLD/lib/pkgconfig/:$WLD/share/pkgconfig/" export ACLOCAL="aclocal -I $WLD/share/aclocal" export XDG_RUNTIME_DIR="/run/shm/wayland" export XDG_CONFIG_HOME="$WLD/etc" export XORGCONFIG="$WLD/etc/xorg.conf" mkdir -p "$WLD/share/aclocal" mkdir -p "$XDG_RUNTIME_DIR" chmod 0700 "$XDG_RUNTIME_DIR"你可以把上面的内容放到一个脚本里并在终端里放置到你想编译包的位置或者运行Weston.
pkg-config配置文件派上的一些库并没有安装合适的 pkg-config文件. 我们需要手动安装它们.
从git://git.collabora.co.uk/git/user/pq/Android-pc-files.git下载.pc文件并且确保你选取的是raspberrypi分支. 主分支是适用于Android平台的相似文件.
复制.pc文件到$WLD/share/pkgconfig/目录下:
$ cp bcm_host.pc egl.pc glesv2.pc $WLD/share/pkgconfig/ Wayland库Libwayland请按照the generic build guide来编译及安装.
$ git clone git://anongit.freedesktop.org/wayland/wayland $ cd wayland $ ./autogen.sh --prefix=$WLD --disable-documentation $ make $ make install使用--disable-documentation使其不依赖Doxygen.
libxkbcommonLibxkbcommon同样请按照the generic build guide来编译及安装.
$ git clone git://people.freedesktop.org/xorg/lib/libxkbcommon.git $ cd libxkbcommon/ $ ./autogen.sh --prefix=$WLD $ make && make install Weston和示例应用相比正常的编译, Weston的配置有些许不同:
$ git clone git://anongit.freedesktop.org/wayland/weston $ cd weston $ ./autogen.sh --prefix=$WLD \ --disable-setuid-install --with-cairo-glesv2 \ --disable-x11-compositor --disable-drm-compositor \ --disable-fbdev-compositor --disable-wayland-compositor \ --disable-weston-launch --disable-simple-egl-clients \ --disable-egl --disable-libunwind --disable-colord \ --disable-resize-optimization --disable-xwayland-test \ WESTON_NATIVE_BACKEND="rpi-backend.so" $ make $ make install