Two source builds: convert-only, or a full host stack

Most people should stay on the official GitHub zip and the setup guide. This page is for a source checkout. Relinker-only converts a guest ELF to host PE or ELF. A runnable host stack also needs the libraries target. A self-build plus release libraries is a different environment — do not mix them when you judge compatibility.

v0.1.3 · Content assembled 22 Oct 2026 from current main BUILD.md, USAGE.md, and README, plus BUILD.md at tag v0.1.3. Not a host compile.

When to download instead

The official zip on GitHub Releases is the supported pair for this site: one relinker and the matching host libraries from the same tag. Building from source is optional. Use it when you are changing the code, reproducing a named commit, or the published zip is missing a host bit BUILD.md says you can compile.

Download: official zip pair · Casual path: official Releases, then setup.

Build from source when

  • You are contributing a patch and need to compile the tree you edited.
  • A public report names a commit or tag that is not the published zip pair.
  • You need a host library that the release zip does not ship for your OS — only if BUILD.md documents that target.

The two documented build paths

Relinker-only: convert guest ELF → host PE or ELF

BUILD.md: this mode builds the conversion tool without initializing submodules or configuring SDL, Vulkan, FFmpeg, FreeType, or the shader recompiler. It needs CMake, a C++20 compiler, and a build tool. Python 3.9 or newer enables the Python regression tests. The binary lands at build-relinker/core/relinker/relinker (relinker.exe on Windows with Ninja).

cmake -S . -B build-relinker -G Ninja -DCMAKE_BUILD_TYPE=Release -DANYPS5_RELINKER_ONLY=ON -DBUILD_TESTING=ON
cmake --build build-relinker --parallel
ctest --test-dir build-relinker --output-on-failure
  • Output is x86-64: Linux ELF by default, Windows PE with --windows, or Mach-O with --macos.
  • Converted titles still need system libraries built for the target OS and a compatible x86-64 host. Relinker-only does not build those libraries.
  • Releases ship host libraries for Linux and Windows only.
  • Use a separate build directory if you later run the full build.

Full build: tools plus the libs / runtime

A runnable host stack starts with git submodule update --init --recursive. With the default BUILD_TESTING=OFF, cmake --build does not produce the patched libraries. BUILD.md: every library under core/libs/prx is EXCLUDE_FROM_ALL, so the explicit --target libs step is required. Titles load the patched .prx files from build/core/libs/libs.

git submodule update --init --recursive
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
cmake --build build --parallel
cmake --build build --target libs --parallel
  • Requirements named on current main and at v0.1.3: x86-64, Git, CMake 3.22.1 or newer, Ninja, C++20. Open BUILD.md for OS packages.
  • After a library change, skip --target libs and you are testing the previous binaries.
  • USAGE.md: copy build/core/libs/libs/*.prx into the title’s libs/. Use libraries built for the target OS.
  • Windows self-build: also copy libgcc_s_seh-1.dll, libstdc++-6.dll, and libwinpthread-1.dll from that toolchain beside the patched PRX files. The loader does not search PATH; missing DLLs can surface as error 126 even when the .prx is present. Release zips already include them.

Reproducibility basics

Official release assets record a tag and commit (web-release.json / release.json on the Pages job). If you compile, write down the tag or the commit of the tree you built. A PR number is not a revision: later commits and conflict resolutions change the tree.

  • Checkout a tag (for example v0.1.3) or a named commit, then record git rev-parse HEAD.
  • Do not skip --target libs when you need a runnable host stack.
  • Keep the relinker, the patched libraries, and (on Windows) the three MinGW runtime DLLs from the same compile.
  • Open the BUILD.md that came with that tree. Current main documents more Windows toolchains than the v0.1.3 file.

macOS and other hosts

README and BUILD.md: the relinker-only build runs on macOS, including Apple silicon, using AppleClang from the Xcode command-line tools. USAGE.md: --macos writes x86-64 Mach-O, which runs under Rosetta on Apple silicon; --to-rosetta lowers instructions Rosetta lacks. Converted titles still need system libraries for the target OS. Releases ship those libraries for Linux and Windows only. A passing relinker-only compile, or a Mach-O convert, is not a supported macOS game runtime and is not Playable. Unknown stays unknown.

After the build

A self-build is not the official zip. You still convert a clean ELF and lay out app, libs/, and app0/ the same way. The difference is where the two host files come from: your build directory instead of the GitHub asset pair. A window is not Playable.

  • Relinker-only gives you a converter. It does not replace the host-libraries zip.
  • A full build still needs the setup layout and the same first-launch observe order.
  • Windows 126 or 193 after a self-build is still a layout or missing-DLL problem — see troubleshooting. Do not treat it as a title stage.

A self-build is not Playable

Passing ctest or producing app.exe / app.elf confirms those steps. It does not upgrade any title. Quote the tag or commit you built on the title page and in Game bring-up. This page does not claim Linux audio is fixed on v0.1.3. Game bring-up.

Download: official zip pair · Setup: layout and first-launch observe order · Troubleshooting: 193, 126, host limits

Original sources

Open official GitHub ReleasesWhich two files