注意事项¶
Arch Linux¶
Eden 也可作为 AUR 软件包 获取。如果你无法构建,可以使用该软件包,或者将自己的构建流程与 PKGBUILD 进行对比。
Gentoo Linux¶
GURU 中提供了 games-emulation/eden。该仓库还包含一些额外依赖,如 mcl、sirit、oaknut 等。
如果构建时遇到问题,务必查阅该 ebuild。
macOS¶
macOS 基本未经测试。请做好崩溃、严重的 Vulkan 问题以及其他“有趣”状况的心理准备。
OpenIndiana¶
务必查阅 OpenIndiana 软件包列表 以交叉验证可用性。
执行常规的更新和安装必要工具:sudo pkg update && sudo pkg install git cmake。
- gcc:安装
developer/gcc-14。 - clang:20 版本有问题,请安装
developer/clang-19。
Qt Widgets 似乎已损坏。目前,请在 configure 命令中添加 -DENABLE_QT=OFF。与此同时,Qt Quick 前端正在开发中——请稍后再来查看!
某些直接调用 cc 的依赖(如 tz)需要以下配置:
默认的 MESA 版本有些过时,建议设置以下环境变量以获得更流畅的体验:
export MESA_GL_VERSION_OVERRIDE=4.6
export MESA_GLSL_VERSION_OVERRIDE=460
export MESA_EXTENSION_MAX_YEAR=2025
export MESA_DEBUG=1
export MESA_VK_VERSION_OVERRIDE=1.3
# Only if nvidia/intel drm drivers cause crashes, will severely hinder performance
export LIBGL_ALWAYS_SOFTWARE=1
- 如果使用多线程,请修改生成的 ffmpeg.make(位于构建目录中)(基础系统的
make不使用-j4,因此请改用gmake)。 - 系统自带的 OpenSSL 通常无法使用。请改用
-DYUZU_USE_BUNDLED_OPENSSL=ON以使用随附的静态 OpenSSL,或从源代码构建系统依赖项。
OmniOS¶
在 OmniOS 上使用 pkgsrc 安装 developer/gcc14。
由于 OmniOS 上缺少大量依赖,你可能会希望使用 -DCPMUTIL_FORCE_BUNDLED=ON 和 -DYUZU_USE_BUNDLED_OPENSSL=OFF。
在 OmniOS 上,你需要自行构建 glslang:
sudo pkg install python-313
git clone --depth=1 https://github.com/KhronosGroup/glslang.git
cd glslang
python3.13 ./update_glslang_sources.py
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -- -j `nproc`
cmake --install build
你可能会忍不住指定 -t glslang,但这会导致安装失败。所以不要这样做。
在 CMake 中使用 --parallel 会错误地传入 dmake ... -jn 而不是 dmake ... -j n;这是 OmniOS 的 CMake 的一个 bug,建议在该问题修复之前不要使用此选项。
你可能还需要安装 gmake 才能正确构建 FFmpeg,该软件由 build-essential 包提供。
如果此前还不清楚的话:要在 OmniOS 中正常运行模拟器,你需要一个 X11 服务器;此指南 是一个很好的入门起点。其中指向 pkgsrc 的链接已经过时,因此也请参考此范例。
对于基于 Solaris 的操作系统,CMake 不会正确设置 ${CMAKE_SYSTEM_NAME}(在 AMD64 上会被设为 i686),因此从 openssl-cmake 构建 OpenSSL 时可能会遇到问题。
HaikuOS¶
建议在安装前执行 pkgman full-sync。参见 HaikuOS: Installing applications。有时该过程可能会被“Interrupted syscall”之类的错误中断;只需重新运行该命令即可解决问题。默认安装中已包含 g++。
GPU 支持普遍不足或存在 bug,因此建议只安装 pkgman install mesa_lavapipe。对于大多数自制应用,甚至一些商业游戏,性能都是可以接受的。
不知为何,glslangValidator 在执行时会崩溃;解决办法是自己构建 glslang。应用 .patch/glslang/0001-haikuos-fix.patch 中的补丁。主要问题在于 ShFinalize() 释放了已经销毁的内存;这里所谓的“修复”是让程序直接泄漏内存,由操作系统处理其余部分。参见此 issue。
因此,这个补丁默认不会在所有平台上应用(原因显而易见)——它是 HaikuOS 专属补丁。克隆 SPIRV-Tools 后,使用 git apply <absolute path to patch> 应用补丁,然后运行 make -C build,并将生成的可执行文件(位于 build/StandAlone/glslang)加入 PATH。
cubeb_devel 也无法正常工作;请禁用 cubeb 或将其卸载。
在 mesa-24 可用之前,仍然无法完美运行。可以通过复制粘贴(极其困难的任务)来修改 CMakeCache.txt,以填入 libGL 和 libGLESv2 的 .so(cp /boot/system/lib/libGL.so .)。
如果你安装了 quazip1_qt6_devel,请将其卸载。它可能会在 CMake 中调用 Core5Compat,而该包在打包时存在问题。
OpenBSD¶
系统自带的 Boost 没有 context(截至 7.8 版本);因此你可能需要指定 -DYUZU_USE_CPM=ON -DBoost_FORCE_BUNDLED=ON。
配置完成后,你可能需要修改 externals/ffmpeg/CMakeFiles/ffmpeg-build/build.make,将 -j 改为 -j$(nproc)。
-lc++-experimental 在 OpenBSD 中不存在,但 LLVM 驱动仍然会尝试链接它;解决办法是创建一个符号链接:ln -s /usr/lib/libc++.a /usr/lib/libc++experimental.a。由于缺少 std::jthread 等特性,目前构建无法正常工作;要么手动编译 libc++,要么等待 ports 跟进。
FreeBSD¶
NetBSD¶
MSYS2¶
RedoxOS¶
如果 clang 报错,请尝试使用 g++11。
FreeBSD¶
Eden 目前尚不能以 FreeBSD 移植版的形式获取,不过相关工作正在进行中。目前推荐的做法是自己编译。
可用的 OpenSSL 移植版(3.0.17)已经过时,建议改用随附的静态库;为此,请在 CMake 配置命令中添加 -DYUZU_USE_BUNDLED_OPENSSL=ON。
在 15.0 上,手柄/控制器可能无法工作,这是因为过时的 SDL 无法很好地响应新的 usbhid(2) 驱动。要解决此问题,只需禁用 usbhid(2)(将以下内容添加到 /boot/loader.conf):
NetBSD¶
2026-02-07:不得安装 vulkan-headers,因为 pkgsrc 中的版本低于所需版本。请等待二进制包更新,或从源代码构建更新版本。
如果尚未通过 pkg_add pkgin 安装 pkgin,请先安装,另请参阅通用的 pkgsrc 指南。对于 NetBSD 10.1,请提供 echo 'PKG_PATH="https://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/10.1/All/"' >/etc/pkg_install.conf。如果 pkgin 耗时过长,可考虑将以下内容添加到 /etc/rc.conf:
系统默认提供 g++-10,但它不支持当前的 C++ 代码库;请使用 pkgin install clang-19 安装 clang-19。或者安装 gcc14(或者在当前 pkgsrc 中安装 gcc15)。这样一来,以下 CMake 命令可能可用:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -Bbuild(推荐)cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/pkg/gcc14/bin/gcc -DCMAKE_CXX_COMPILER=/usr/pkg/gcc14/bin/g++ -Bbuildcmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/pkg/gcc15/bin/gcc -DCMAKE_CXX_COMPILER=/usr/pkg/gcc15/bin/g++ -Bbuild
在生成 SPIRV 着色器的 C++ 头文件时,Make 可能会报错,因此建议使用 gmake 而不是系统默认的 make。
parallel/spirv-tools 没有可用的二进制形式,必须从源代码构建。
NetBSD 上不提供 glslang,要解决此问题,只需自行构建 glslang:
pkgin python313
git clone --depth=1 https://github.com/KhronosGroup/glslang.git
cd glslang
python3.13 ./update_glslang_sources.py
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -- -j`nproc`
cmake --install build
不过,强烈建议使用 pkgsrc,请参阅获取 pkgsrc。必须获取 current 版本,而不是 2025Q2 版本。
NetBSD 中包含 QtCore,但由于配置错误(!),我们必须包含一个带有 bits/c++config.h 的标准头文件,因为 source_location(QtCore 所需)未被正确配置为引入 bits/c++config.h(实验库中的任何内容都没有这样做)。这是 NetBSD 打包的问题,不是我们的错,但无可奈何。
DragonFlyBSD¶
2026-02-07:vulkan-headers 和 vulkan-utility-libraries 绝不可被卸载,因为它们太旧:1.3.289。要么等待二进制包更新,要么从源代码构建更新版本。
如果找不到 libstdc++.so.6(GLIBCXX_3.4.30),请尝试:
rm /usr/local/lib/gcc11/libstdc++.so.6
ln -s /usr/local/lib/gcc14/libstdc++.so /usr/local/lib/gcc11/libstdc++.so.6
这可能会带来一些目前我们无需担心的不可预见后果。
默认的 g++(以及 libstdc++)过于陈旧——因此请安装 gcc14,并将 CMake 重定向到新的编译器工具链:-DCMAKE_CXX_COMPILER=gcc14 -DCMAKE_C_COMPILER=g++14。
还有 llvm18,可使用 -DCMAKE_CXX_COMPILER=clang++18 -DCMAKE_C_COMPILER=clang18(注意末尾的 18 后缀)。NOTE:它没有更新的 libcxx,因此会缺少 <span>,要么手动构建它,要么使用 gcc。
如果构建卡住,请使用 hammer2 bulkfree。
MSYS2¶
只有 MINGW64 环境经过测试(ARM 上为 CLANGARM64);不过,除 MINGW32 外,其他所有环境(理论上)都应该能正常工作。
在为并非完全静态的 MSYS2 构建打包时,你需要递归地将所有依赖 DLL 复制到 windeployqt6 旁边;例如:
# MSYS_TOOLCHAIN is typically just mingw64
# since Windows is case-insensitive, you can set this to $MSYSTEM
# or, if cross-compiling from Linux, set it to usr/x86_64-w64-mingw32
export PATH="/${MSYS_TOOLCHAIN}/bin:$PATH"
# grab deps of a dll or exe and place them in the current dir
deps() {
# string parsing is fun
objdump -p "$1" | awk '/DLL Name:/ {print $3}' | while read -r dll; do
[ -z "$dll" ] && continue
# bin directory is used for DLLs, so we can do a quick "hack"
# and use command to find the path of the DLL
dllpath=$(command -v "$dll" 2>/dev/null || true)
[ -z "$dllpath" ] && continue
# explicitly exclude system32/syswow64 deps
# these aren't needed to be bundled, as all systems already have them
case "$dllpath" in
*System32* | *SysWOW64*) continue ;;
esac
# avoid copying deps multiple times
if [ ! -f "$dll" ]; then
echo "$dllpath"
cp "$dllpath" "$dll"
# also grab the dependencies of the dependent DLL; e.g.
# double-conversion is a dep of Qt6Core.dll but NOT eden.exe
deps "$dllpath"
fi
done
}
# NB: must be done in a directory containing eden.exe
deps eden.exe
# deploy Qt plugins and such
windeployqt6 --no-compiler-runtime --no-opengl-sw --no-system-dxc-compiler \
--no-system-d3d-compiler eden.exe
# grab deps for Qt plugins
find ./*/ -name "*.dll" | while read -r dll; do deps "$dll"; done
RedoxOS¶
软件包安装有时可能会随机卡住,此时需要重启。务必先执行 sudo pkg update,否则卡住的概率将接近 90%。如果“多个”安装同时失败,请尝试逐个安装这些软件包。
当 CMake 调用某些文件相关的系统调用时,有时可能会在(内核?)地址空间上导致崩溃或损坏——因此,如果 CMake 出现“卡死”,请重启系统。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 eg/Eglantine