yuzu-wiki/Building-for-Linux.md
2020-04-18 19:49:26 -03:00

5.3 KiB

Dependencies

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

  • SDL2:

    Distro Commands
    Arch sudo pacman -S sdl2
    Ubuntu sudo apt-get install libsdl2-2.0-0 libsdl2-dev
    Debian sudo apt-get install sdl2 libsdl2-2.0-0 libsdl2-dev
    Fedora sudo dnf install SDL2-devel
    Gentoo emerge media-libs/libsdl2
  • Qt:

    Distro Commands
    Arch sudo pacman -S qt5
    Debian sudo apt-get install qtbase5-dev libqt5opengl5-dev qtbase5-private-dev
    Fedora sudo dnf install qt5-qtbase qt5-qtbase-devel
    Gentoo emerge dev-qt/qtcore dev-qt/qtopengl
  • GCC v7+ (for C++17 support) & misc:

    Distro Commands
    Arch sudo pacman -S base-devel
    Debian sudo apt-get install build-essential libboost-all-dev
    Fedora sudo dnf install gcc
    Gentoo emerge =sys-devel/gcc-7.1.0
  • CMake 3.6+:

    Distro Commands
    Arch sudo pacman -S cmake
    Debian sudo apt-get install cmake
    Fedora sudo dnf install cmake
    Gentoo emerge dev-util/cmake
  • Python2 2.7:

    Distro Commands
    Arch sudo pacman -S python2
    Debian sudo apt install python2
    Fedora sudo dnf install python2
  • Arch specific dependencies: sudo pacman -S gpm zip openssl zstd sndio mbedtls

    Note: A symlink is also needed on arch based distros: sudo ln -T /usr/lib/libsndio.so.7.0 /usr/lib/libsndio.so.6.1

Note: Depending on your distro, the version of CMake you get may not be what's required to build yuzu. Check with cmake --version. Version 3.6 or greater is required for you to be able to build!

  • Clang 3.8 (optional build alternative):
    Distro Commands
    Arch sudo pacman -S clang, libc++ is in the AUR. Use yay to install it.
    Debian sudo apt-get install clang libc++-dev (in some distros, clang-3.8)
    Gentoo emerge sys-devel/clang sys-libs/libcxx

Cloning yuzu with Git

Master:

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

Mainline (no assert):

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 Debug Mode (Slow)

Using GCC

mkdir build && cd build
cmake ../
make
sudo make install

Note: You can use make -jN where N is the number of processors available to accelerate building.

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

Using clang

Note: It is important you use libc++ vs., otherwise your build will likely fail. libc++ is not 100% complete on GNU/Linux, but works well for this build. The libstdc++ std::string is a different data structure than the libc++ std::string. See: LLVM.org. If libc++ is not used, some warnings are treated as errors. Using clang is only really recommended for users not using GCC >= 5. Also see Clang Comparison.

mkdir build && cd build
cmake -DCMAKE_CXX_COMPILER=clang++-3.8 \
      -DCMAKE_C_COMPILER=clang-3.8 \
      -DCMAKE_CXX_FLAGS="-O2 -g -stdlib=libc++" \
      ..
make
sudo make install # (currently doesn't work, needs to be fixed)

Debian/Ubuntu: Owing to bug #808086 the build might fail. To have it build, add the following after line 1938 of /usr/include/c++/v1/string. (see discussion on StackOverflow for more details.)

#if _LIBCPP_STD_VER <= 14
    _NOEXCEPT_(is_nothrow_copy_constructible<allocator_type>::value)
#else
    _NOEXCEPT
#endif

Additionally, on Ubuntu, do:

sudo apt-get install libc++abi-dev && sudo ln -s /usr/include/libcxxabi/__cxxabi_config.h /usr/include/c++/v1/__cxxabi_config.h

Building yuzu in Release Mode (Optimized)

mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
sudo make install # (currently doesn't work, needs to be fixed)

Building with debug symbols

cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
make

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
<crash>
(gdb) bt                         # Print a backtrace of the entire callstack to see which codepath the crash occurred on