Building for Linux

What you will need:

  • Dependencies:
    • SDL2
      • Deb: sudo apt install libsdl2-dev
      • Arch: pacman -S --needed sdl2
      • Fedora: sudo dnf install SDL2-devel
      • OpenSUSE: zypper in libSDL2-devel
    • OpenSSL (Optional)
      • Deb: sudo apt install libssl-dev
      • Arch: pacman -S --needed openssl-1.0
      • Fedora: sudo dnf install openssl-devel
      • OpenSUSE: zypper in openssl-devel
    • Qt 6.2+
      • Deb: sudo apt install qt6-base-dev qt6-base-private-dev qt6-multimedia-dev
        • For Translation Support: apt install qt6-l10n-tools qt6-tools-dev qt6-tools-dev-tools
        • For WrapOpenGL Errors: apt install libgl-dev
      • Arch: pacman -S --needed qt6-base qt6-multimedia qt6-multimedia-ffmpeg
        • You also need a multimedia backend: qt6-multimedia-ffmpeg or qt6-multimedia-gstreamer
      • Fedora: sudo dnf install qt6-qtbase-devel qt6-qtbase-private-devel qt6-qtmultimedia-devel
      • OpenSUSE: zypper in qt6-base qt6-multimedia
    • PortAudio
      • Deb: sudo apt install libasound-dev
      • Fedora: sudo dnf install portaudio-devel
      • OpenSUSE Leap 15: zypper in portaudio-devel
      • OpenSUSE Tumbleweed: zypper in portaudio-devel
    • XORG
      • Deb: sudo apt install xorg-dev libx11-dev libxext-dev
      • Fedora: sudo dnf install xorg-x11-server-devel libX11-devel libXext-devel
      • OpenSUSE Leap 15: zypper in xorg-x11-util-devel libX11-devel libXext-devel
      • OpenSUSE Tumbleweed: zypper in xorg-x11-util-devel libX11-devel libXext-devel
    • JACK Audio Connection Kit
      • Deb: sudo apt install jackd
      • Fedora: sudo dnf install jack-audio-connection-kit-devel
      • OpenSUSE Leap 15: zypper in libjack-devel
      • OpenSUSE Tumbleweed: zypper in libjack-devel
    • PipeWire
      • Deb: sudo apt install libpipewire-0.3-dev
      • Fedora: sudo dnf install pipewire-devel
      • OpenSUSE Leap 15: zypper in pipewire-devel
      • OpenSUSE Tumbleweed: zypper in pipewire-devel
    • sndio (Optional)
      • Deb: sudo apt install libsndio-dev
      • Fedora: sudo dnf -y copr enable andykimpe/shadow && sudo dnf -y install sndio
      • OpenSUSE Leap 15: zypper in sndio-devel
      • OpenSUSE Tumbleweed: zypper in sndio-devel
    • Gnome ESound (Optional)
      • Deb: echo "esound require build use source code https://download.gnome.org/sources/esound/"
      • Fedora: sudo dnf install esound-devel
      • OpenSUSE Leap 15: zypper in libesd0-devel
      • OpenSUSE Tumbleweed: zypper in libesd0-devel
    • Compiler (You only need one of these)
      • GCC 11.0+
        • Deb: apt install build-essential
        • Arch: pacman -S --needed base-devel
        • Fedora: dnf install gcc-c++
        • OpenSUSE: zypper in gcc-c++
      • Clang 15.0+
        • Deb: apt install clang clang-format libc++-dev
          • Note for Ubuntu users: Clang 15 is available only from 22.10 onward. For earlier distro versions, see: https://apt.llvm.org/
        • Arch: pacman -S --needed clang, libc++ is in the AUR. Use pacaur or yaourt to install it.
        • Fedora: dnf install clang libcxx-devel
        • OpenSUSE: zypper in clang
    • CMake 3.20+
      • Deb: apt install cmake
      • Arch: pacman -S --needed cmake
      • Fedora: dnf install cmake
      • OpenSUSE: zypper in cmake extra-cmake-modules

Cloning Lime3DS

                    
    git clone --recursive https://github.com/Lime3DS/Lime3DS
    cd Lime3DS
                    
                

Building

Building Lime3DS in Debug Mode (Slow)

Using GCC

                    
    mkdir build
    cd build
    cmake ../
    cmake --build . -- -j"$(nproc)"
    sudo make install (optional)
                    
                

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

Using Clang

                    
    mkdir build
    cd build
    cmake .. -DCMAKE_CXX_COMPILER=clang++ \
        -DCMAKE_C_COMPILER=clang \
        -DCMAKE_CXX_FLAGS="-O2 -g -stdlib=libc++"
    cmake --build . -- -j"$(nproc)"
    sudo make install (optional)
                    
                

If you get a weird compile error related to std::span conversions, make sure you are using clang and libc++ 15 or up. This is an issue with libc++ 14.


Building Lime3DS in Release Mode (Optimized)

                    
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    cmake --build . -- -j"$(nproc)"
    sudo make install (optional)
                    
                

Building Lime3DS with Debug Symbols

                    
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
    cmake --build . -- -j"$(nproc)"
    sudo make install (optional)
                    
                

Running without installing

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

                    
    # SDL
    cd build/bin/
    ./citra

    # Qt
    cd build/bin/
    ./citra-qt

    # Dedicated room
    cd build/bin/
    ./citra-room
                    
                

Debugging

                    
    cd data
    gdb ../build/bin/citra-qt
    (gdb) run

    (gdb) bt
                    
                

Install new Qt Version

If your distribution’s version of Qt is too old, there are a few places you may be able to find newer versions.