☰
如何从源码构建AnyPS5?Linux/Windows完整编译指南与CMake参数详解
2026/10/3 7:39:40 网站建设 项目流程

如何从源码构建AnyPS5?Linux/Windows完整编译指南与CMake参数详解

【免费下载链接】AnyPS5Tool for automatic PS5 executables porting to Linux and Windows项目地址: https://gitcode.com/gh_mirrors/an/AnyPS5

AnyPS5 是一款将 PS5 可执行文件自动移植到 Linux 和 Windows 的开源工具,内置 relinker 重链接器与系统 PRX 库实现,无需模拟器即可原生运行。本文将带你完成 AnyPS5 源码构建:从工具链准备、CMake 参数详解到双平台编译与测试,一篇看懂。

🔧 构建前准备:工具链要求一览

在开始编译 AnyPS5 之前,先确认你的开发环境满足最低要求:

组件要求说明
CMake≥ 3.20见 CMakeLists.txt 中的版本声明
C++ 编译器C++20 标准relinker 仅依赖 C++20 标准库
LinuxGCClibc.prx 含编译器相关代码,Linux 下建议用 GCC
WindowsMinGW-w64 GCC 15.2.0推荐winlibs-gcc15、x86_64-ucrt-posix-seh版本
构建生成器Ninja(推荐)官方贡献指南即采用 Ninja
Python 3可选用于注册部分 relinker 测试,缺失不影响主程序编译

💡 所有第三方依赖(SDL2、ffmpeg-core、freetype、glslang、SPIRV-Tools 等)均以子模块形式放在 3rdparty/ 目录下并从源码构建,不需要你在系统里单独安装这些库。因此 clone 时建议带上子模块。

git clone --recurse-submodules https://gitcode.com/gh_mirrors/an/AnyPS5 cd AnyPS5

⚡ 最快编译方法:三步完成 AnyPS5 构建

官方 CONTRIBUTING.md 给出的标准流程只有三条命令,这是构建 AnyPS5 的最快方式:

cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON cmake --build build ctest --test-dir build --output-on-failure

逐条解释:

  • 第一步(配置):-S . -B build指定源码目录为当前目录、构建目录为build/;-G Ninja选择 Ninja 生成器;-DCMAKE_BUILD_TYPE=Release开启优化;-DBUILD_TESTING=ON启用测试。
  • 第二步(编译):并行编译全部目标,产物输出到build/。
  • 第三步(测试):用 CTest 运行已注册的测试并打印失败详情。

构建完成后你会得到几类产物:

  • relinker:核心重链接工具,负责把 ELF 可执行文件转换为目标系统格式,源码见 core/relinker/main.cpp
  • nid_patcher:NID 补丁工具,见 core/libs/nid/src/main.cpp
  • 系统 PRX 库:编译并打好 NID 补丁后输出到build/libs/,聚合目标为libs(见 core/libs/CMakeLists.txt)
  • shader recompiler:将 PS5 着色器重编译为 SPIR-V 的静态库,见 core/shader/recompiler/

🎛 CMake 参数详解:4 个选项控制构建行为

AnyPS5 根 CMakeLists.txt 中只暴露了少量构建开关,每个都很有用:

CMake 参数默认值作用
BUILD_TESTINGOFF构建并注册 CTest 测试套件,跑测试前必须开启
ANYPS5_ENABLE_SPIRV_TOOLSOFF启用 SPIRV-Tools 对着色器做校验与优化,会额外编译 3rdparty/SPIRV-Tools 并链接SPIRV-Tools-opt(见 recompiler/CMakeLists.txt)
APS5_ENABLE_TIMING_LOGOFF开启帧耗时日志,会以编译宏APS5_ENABLE_TIMING_LOG注入全部目标
CMAKE_BUILD_TYPE无建议填Release;shader 缓存版本头会把构建类型计入哈希,切换类型可能使旧缓存失效

示例:开启着色器校验的完整配置命令:

cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release \ -DBUILD_TESTING=ON -DANYPS5_ENABLE_SPIRV_TOOLS=ON

⚠️ 注意第三个开关的拼写是APS5_(而非ANYPS5_),这是项目中的原始命名,配置时请照抄。

🐧 Linux 构建要点

  • 编译器:Linux 下用 GCC。链接阶段会自动加上-static -static-libgcc -static-libstdc++(见 CMakeLists.txt),但在链接共享 PRX 库时会按需移除-static(见 core/libs/CMakeLists.txt)。
  • SDL 配置:项目强制静态链接 SDL2 并只启用 X11 + Vulkan 后端、禁用 Wayland/OpenGL(见 CMakeLists.txt),因此系统需安装 X11、Vulkan 头文件及相关静态开发包。
  • Intel 平台:如果你的 CPU 是 Intel,relinker 支持--to-intel参数,会把可执行文件及其sce_module中受支持的 AMD-only 指令降级为 Intel 可运行的形式;遇到不支持的指令会直接报错(见 README.md 与 cli/CliArgs.cpp)。

🪟 Windows 构建要点

  • 编译器:Windows 目前要求 MinGW-w64 GCC 15.2.0(winlibs-gcc15,x86_64-ucrt-posix-seh线程模型),这是由 libc.prx 中编译器相关代码决定的。
  • DWAA 展开表:链接 PRX 库后会自动调用objcopy把.eh_frame重命名为.ehfram以支持异常展开,因此构建机必须能访问objcopy(见 core/libs/CMakeLists.txt)。
  • 静态链接:MinGW 下可执行文件会附加-static -static-libgcc -static-libstdc++,产出不依赖额外 DLL 的 exe。

✅ 运行测试:验证你的构建是否健康

开启BUILD_TESTING=ON后,ctest会运行 io、codegen、ELF 偏移校验、NID 过滤器等多组 C++ 测试;若系统装有 Python 3,还会额外注册一批 Python 驱动的 relinker 集成测试(如 ELF 头校验、TLS、Windows GUI 子系统等,注册逻辑见 core/relinker/CMakeLists.txt)。

ctest --test-dir build --output-on-failure

💡 如果配置阶段提示Python3 interpreter not found; skipping Python relinker tests,说明只是跳过了 Python 测试,主程序构建不受影响。

🛠 常见问题快速排查

Q1:配置时报第三方库找不到?本项目不从系统查找第三方库,全部从 3rdparty/ 子模块源码构建。请确认 clone 时使用了--recurse-submodules,或在已 clone 的仓库中执行git submodule update --init --recursive。

Q2:链接 PRX 库时提示缺少 objcopy?Windows(MinGW)构建依赖objcopy处理展开表,请确保它在 PATH 中。

Q3:编译通过但运行 relinker 报错?relinker 用法为relinker [选项] <输入.elf> <输出.elf>,常用选项包括--windows(转 PE)、--to-intel、--rpath <路径>、--lazy-binding等,完整选项列表见 CliArgs.cpp 中的用法说明。

Q4:想深入了解项目结构?重链接器核心在 core/relinker/,系统库实现分布在 core/libs/prx/,着色器重编译器在 core/shader/recompiler/,开发规范可阅读 docs/dev/CONVENTIONS.md,已验证游戏列表见 docs/user/COMPATIBILITY.md。

📌 总结

用不到 10 分钟就能完成 AnyPS5 的源码构建:准备 GCC + CMake + Ninja,git clone时带上子模块,跑三条标准命令即可得到 relinker、nid_patcher 和全套 PRX 系统库。记住三个 CMake 开关——BUILD_TESTING开启测试、ANYPS5_ENABLE_SPIRV_TOOLS增强着色器校验、APS5_ENABLE_TIMING_LOG记录帧耗时——就能自由定制你的 AnyPS5 编译环境。祝移植顺利!

【免费下载链接】AnyPS5Tool for automatic PS5 executables porting to Linux and Windows项目地址: https://gitcode.com/gh_mirrors/an/AnyPS5

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询