☰
AnyPS5输入文件怎么放?input.elf与sce_module目录结构完全图解
2026/10/7 15:16:31 网站建设 项目流程

AnyPS5输入文件怎么放?input.elf与sce_module目录结构完全图解

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

AnyPS5是一款用于将 PS5 可执行文件自动移植到 Linux 和 Windows 的开源工具。它内置的 relinker 转换器能把input.elf转成目标系统原生格式,无需模拟器或额外运行时。但很多新手第一次使用时就卡住了:输入文件到底怎么放?sce_module目录有什么讲究?本文用一张图讲清整个目录结构,让你一次性摆对文件。

一分钟看懂:输入什么、输出什么

整个转换流程只有两个位置参数:

relinker [选项] <input.elf> <输出文件>
  • Linux 输出:relinker source/input.elf app.elf
  • Windows 输出:relinker --windows source/input.elf app.exe

⚠️ 注意:输出格式由--windows决定,光把输出文件命名为.exe并不会生成 Windows 版本。Intel 平台需追加--to-intel。

标准目录结构:input.elf 与 sce_module 怎么摆

核心规则一句话:主程序input.elf和它的配套模块目录必须放在同一个文件夹里(模块目录放在输入可执行文件的"旁边")。

source/ input.elf ← 主程序(干净的 ELF 可执行文件) sce_module/ ← 游戏自带的 ELF 模块(.prx 等) libkernel.prx libSceNgs2.prx ...

转换完成后,运行时布局会自动生成(路径相对于输出文件):

app.elf(或 app.exe) libs/ ← 系统库(.prx,从 build/core/libs/libs/ 复制) app0/ ← 游戏资源 sce_module/ ← 转换后的模块(*.guest.prx)

模块会保留在app0/下原来的目录名里,转换时终端还会打印每个模块的确切路径。详细说明见官方文档 docs/user/USAGE.md。

三个目录名怎么选:sce_module、sce_modules 还是 prx

relinker 认三种目录名,它们不是三选一,而是有明确的共存规则:

目录组合是否合法说明
只有sce_module/✅最常见的标准写法
只有sce_modules/✅复数形式,同样识别
只有prx/✅模块直接放这里
prx/+sce_module/(或sce_modules/)✅两者可以共存,目录会合并处理
sce_module/+sce_modules/同时存在❌ 报错单复数二选一
三个目录全都不存在❌ 报错除非游戏确实无需模块(调试用--skip-sce-module)

这个检测逻辑写在 core/relinker/relinker/src/guest/GuestModuleBuilder.cpp,集成测试 core/relinker/relinker/tests/test_guest_module_directories.py 覆盖了上述每种组合,可以放心对照。

模块文件有哪些硬性要求

摆好目录后,文件本身还有几个细节:

  1. 只认 ELF 文件:目录里每个文件都会被检查 ELF 魔数(7f 45 4c 46),不是 ELF 的文件(如.txt)会被静默忽略。
  2. 跳过.guest.prx后缀:这是转换产物的命名约定,同名产物文件不会被重复处理。
  3. 目录名本身必须是目录:如果prx是一个文件而不是文件夹,会直接报错Guest module path is not a directory。
  4. 模块间不能有重复导出符号,否则会报Duplicate guest export。

常见报错速查:relinker 提示目录错误时怎么办

报错信息原因解决办法
Both sce_module and sce_modules exist beside the input executable单复数目录同时存在删掉其中一个,只保留一个
sce_module/sce_modules/prx was not found beside the input executable输入文件旁边没有模块目录把模块目录放到input.elf同级目录
Guest module path is not a directory目录名是个文件删除该文件,重建为目录
Duplicate guest export不同模块导出了相同符号检查模块来源,去掉重复模块

退出码约定:0转换成功,1参数错误,2转换失败(错误打印到 stderr)。

💡 小贴士:命令行参数解析见 core/relinker/cli/src/CliArgs.cpp,直接运行relinker(不带参数)会打印用法并报错退出——它没有--help选项。

转换之后:libs 与 app0 别忘了配齐

光转换成功还不够,运行前还要准备好运行时布局:

  • 把编译好的系统库从build/core/libs/libs/*.prx复制到输出文件旁的libs/目录(注意要用与目标系统匹配的版本);
  • 游戏资源放到app0/下;
  • Linux 下先chmod +x app.elf再运行,Windows 下 PowerShell 执行.\app.exe即可。

构建步骤可参考 docs/dev/BUILD.md,已验证可玩的游戏列表见 docs/user/COMPATIBILITY.md。

小结

AnyPS5 输入文件的正确摆法可以浓缩成三句话:

  1. input.elf必须是干净的 ELF 主程序;
  2. 配套模块放在旁边的sce_module/(或sce_modules/、prx/),单复数二选一,prx/可与其一共存;
  3. 输出端配好libs/系统库和app0/资源,即可运行。

按这个目录结构放置,PS5 可执行文件移植到 Linux / Windows 的第一步就不会再出错。🎮

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

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

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

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

立即咨询