The below wiki article is based on user submitted content. Please verify all hyperlinks and terminal commands below!

See a mistake? Want to contribute? Edit this article on Github

Building for Linux

This article was written for developers. Users looking to simply run yuzu should try downloading Mainline first. As it is an AppImage, it only needs to be downloaded and made executable to use it.


Dependencies

You’ll need to download and install the following to build yuzu:

  • GCC v10+ (for C++20 support) & misc
  • CMake 3.15+

The following are handled by yuzu’s externals, but installing them via the package manager will avoid building them with yuzu:

If version 1.73.0 is not already installed, pre-compiled binaries for Boost 1.75.0 will be downloaded from here automatically by CMake:

If version 5.12.5 is not already installed, pre-compiled binaries for Qt 5.15.2 will be downloaded from here automatically by CMake:

  • Qt 5.12+

All other dependencies will be downloaded by Conan if needed:

Dependencies are listed here as commands that can be copied/pasted. Of course, they should be inspected before being run.

  • Arch / Manjaro:
    • sudo pacman -Syu --needed base-devel boost catch2 cmake ffmpeg fmt git glslang libzip lz4 mbedtls ninja nlohmann-json openssl opus python-pip python2 qt5 sdl2 zlib zstd
    • python3 -m pip install --user conan
    • Building with QT Web Engine needs to be specified when running Cmake with the param -DCMAKE_CXX_FLAGS="-I/usr/include/qt/QtWebEngineWidgets" with qt5-webengine installed.
    • GCC 10 or later is required.
  • Ubuntu / Linux Mint / Debian:
    • sudo apt-get install autoconf cmake g++-10 gcc-10 git glslang-tools libasound2 libboost-context-dev libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build python3 python3-pip qtbase5-dev qtbase5-private-dev qtwebengine5-dev
    • pip3 install --user conan
    • Ubuntu 20.04, Linux Mint 20, or Debian Bullseye or later is required.
    • Users need to manually specify building with QT Web Engine enabled. This is done using the parameter -DYUZU_USE_QT_WEB_ENGINE=ON when running CMake.
    • Users need to manually specify building with GCC 10. This can be done by adding the parameters -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 when running CMake. i.e.
cmake .. -GNinja -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10
  • Users need to manually specify building with QT Web Engine enabled. This is done using the parameter -DYUZU_USE_QT_WEB_ENGINE=ON when running CMake.

  • Fedora:

    • sudo dnf install alsa-lib-devel autoconf cmake gcc gcc-c++ git glslang hidapi-devel libXext-devel libtool libusbx-devel nasm pulseaudio-libs-devel python3 python3-pip qt5-linguist qt5-qtbase-devel qt5-qtbase-private-devel qt5-qtwebengine-devel
    • pip install --user conan
    • Fedora 32 or later is required.
  • RHEL-like (such as Rocky Linux):

    • Though this should have been similar to Fedora, this ends up being a tad bit more involved due to the distro’s older or missing packages. Fortunately, at least Rocky Linux 8 makes g++-10 available directly in the package manager, so it’s just a matter of finding the other smaller dependencies. (CentOS 8 does not have g++-10, so it is even less trivial to build yuzu there.)
    • sudo dnf config-manager --set-enabled powertools # Required for ninja-build and nasm
    • sudo dnf install alsa-lib-devel gcc-toolset-10-gcc-g++ git libXext-devel libzip-devel libzip-tools libzstd-devel lz4-devel make ninja-build openssl-devel opus-devel pulseaudio-libs-devel python36 qt5-linguist qt5-qtbase-devel qt5-qtbase-private-devel zlib-devel
    • pip install --user conan
    • Distro version 8 or later is required.
    • Additional notes:
      • /opt/rh/gcc-toolset-10/root/usr/bin must be added to the front of the PATH.
      • CMake (cmake-[version]-linux-x86_64.tar.gz) and glslangValidator (glslang-master-linux-Release.zip) must be downloaded and installed separately. To “install” them, extract the archives and copy their contents into the $HOME/.local/, such that the directory structure looks like $HOME/.local/bin and so on.
  • Gentoo:

    • **Disclaimer**: this dependency list was written by a novice Gentoo user who first set it up with a DE, and then based this list off of the Fedora dependency list. This may be missing some requirements, or includes too many. Caveat emptor.
    • emerge --ask app-arch/lz4 dev-libs/boost dev-libs/hidapi dev-libs/libzip dev-libs/openssl dev-python/pip dev-qt/linguist dev-qt/qtconcurrent dev-qt/qtcore dev-util/cmake dev-util/glslang dev-vcs/git media-libs/alsa-lib media-libs/opus media-sound/pulseaudio media-video/ffmpeg net-libs/mbedtls sys-libs/zlib x11-libs/libXext
    • pip install --user conan
    • GCC 10 or later is required.
    • Users may need to append pulseaudio and bindist to the USE flag.

After installing Conan, $HOME/.local/bin needs to be included in the PATH variable. Check your $HOME/.profile and $HOME/.bashrc files, if PATH=$HOME/.local/bin:$PATH is not present, append that line to one of either file, then log out and log back in. Fedora and Ubuntu by default already have this covered, though Ubuntu users should log out and log back in to enable it.

Cloning yuzu with Git

Master:

git clone --recursive https://github.com/yuzu-emu/yuzu
cd yuzu

Mainline:

git clone --recursive https://github.com/yuzu-emu/yuzu-mainline
cd yuzu-mainline

The --recursive option automatically clones the required Git submodules.

Building yuzu in Release Mode (Optimized)

mkdir build && cd build
cmake .. -GNinja
ninja
sudo ninja install # (currently doesn't work, needs to be fixed)

Optionally, you can use cmake-gui .. to adjust various options (e.g. disable the Qt GUI).

Building yuzu in Debug Mode (Slow)

mkdir build && cd build
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Debug
ninja

Building with debug symbols

mkdir build && cd build
cmake .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo
ninja

Running without installing

After building, the binaries yuzu and yuzu-cmd (depending on your build options) will end up in build/bin/.

# SDL
cd build/bin/
./yuzu-cmd

# Qt
cd build/bin/
./yuzu

Debugging

cd data
gdb ../build/bin/yuzu            # Start GDB
(gdb) run                        # Run yuzu under GDB

(gdb) bt                         # Print a backtrace of the entire callstack to see which codepath the crash occurred on

Advertisement

Advertisement