Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Kompilieren für Linux, *BSD

Siehe auch

Diese Seite beschreibt, wie man einen Linux-Editor kompiliert und Vorlagen-Binärdateien aus dem Quellcode exportiert. Wenn Sie Ihr Projekt stattdessen nach Linux exportieren wollen, lesen Sie Exportieren für Linux.

Anforderungen

Zum Kompilieren unter Linux oder anderen Unix-Varianten ist Folgendes erforderlich:

  • GCC 7+ oder Clang 6+.

  • Python 3.6+.

  • SCons 3.0+-Buildsystem.

    Bemerkung

    Wenn Ihre Distribution standardmäßig Python 2 verwendet oder Sie eine Version von SCons vor 3.1.2 benutzen, müssen Sie die Version von Python, die SCons verwendet, ändern, indem Sie den Shebang (die erste Zeile) der SCons-Skriptdatei in #! /usr/bin/python3 ändern. Benutzen Sie den Befehl which scons, um den Ort der SCons-Skriptdatei zu finden.

  • pkg-config (wird verwendet, um die unten aufgeführten Entwicklungsbibliotheken zu erkennen).

  • Entwicklungsbibliotheken:

    • X11, Xcursor, Xinerama, Xi und XRandR.

    • MesaGL.

    • ALSA.

    • PulseAudio.

  • Optional - libudev (Build mit udev=yes).

Siehe auch

Um den Godot-Quellcode zum Kompilieren zu erhalten, siehe Beschaffung des Quellcodes.

Eine allgemeine Übersicht über die Verwendung von SCons für Godot finden Sie unter Einführung in das Buildsystem.

Distro-spezifische Einzeiler

apk add \
  scons \
  pkgconf \
  gcc \
  g++ \
  libx11-dev \
  libxcursor-dev \
  libxinerama-dev \
  libxi-dev \
  libxrandr-dev \
  mesa-dev \
  libexecinfo-dev \
  eudev-dev \
  alsa-lib-dev \
  pulseaudio-dev

Kompilieren

Starten Sie ein Terminal, wechseln Sie zum Stammverzeichnis des Engine-Quellcodes und geben Sie Folgendes ein:

scons platform=linuxbsd

Bemerkung

Vor Godot 4.0 hieß das Linux/*BSD-Target x11 anstelle von linuxbsd. Wenn Sie Godot 3.x kompilieren wollen, stellen Sie sicher, dass Sie den 3.x-Branch dieser Dokumentation verwenden.

Wenn alles gut geht, wird die resultierende ausführbare Binärdatei im Unterverzeichnis "bin" abgelegt. Diese ausführbare Datei enthält die gesamten Engine und läuft ohne jegliche Abhängigkeiten. Wenn Sie sie ausführen, wird der Projektmanager angezeigt.

Bemerkung

Wenn Sie nicht mit GCC, sondern mit Clang kompilieren möchten, verwenden Sie diesen Befehl:

scons platform=linuxbsd use_llvm=yes

Die Verwendung von Clang scheint eine Voraussetzung für OpenBSD zu sein, da sonst keine Schriftarten erstellt werden.

Bemerkung

Wenn Sie Godot für den Produktionseinsatz kompilieren, können Sie die endgültige ausführbare Datei kleiner und schneller machen, indem Sie die SCons-Optionen target=template_release production=yes hinzufügen.

Wenn Sie Godot mit GCC kompilieren, können Sie die Binärdatei noch kleiner und schneller machen, indem Sie die SCons-Option lto=full hinzufügen. Da die Link-Time-Optimierung ein speicherintensiver Prozess ist, werden beim Kompilieren etwa 7 GB verfügbarer Arbeitsspeicher benötigt.

Bemerkung

Wenn Sie getrennte Editoreinstellungen für Ihre eigenen Godot-Builds und die offiziellen Releases verwenden wollen, können Sie den Portabler Modus aktivieren, indem Sie eine Datei namens ._sc_ oder _sc_ im bin/-Ordner anlegen.

Ausführen eines Headless/Server-Builds

Um im headless Modus zu arbeiten, der Editor-Funktionen für den automatisierten Export von Projekten bietet, verwenden Sie den normalen Build:

scons platform=linuxbsd target=editor

Und dann benutzen Sie das --headless Kommandozeilenargument:

./bin/godot.linuxbsd.editor.x86_64 --headless

Um einen Debug-Server-Build zu kompilieren, der mit Remote Debugging-Tools verwendet werden kann, benutzen Sie:

scons platform=linuxbsd target=template_debug

Um einen Server-Build zu kompilieren, der für den Betrieb von dedizierten Spieleservern optimiert ist, benutzen Sie:

scons platform=linuxbsd target=template_release production=yes

Exportvorlagen erstellen

Warnung

Linux-Binärdateien laufen normalerweise nicht auf Distributionen, die älter sind als die Distribution, auf der sie erstellt wurden. Wenn Sie Binärdateien veröffentlichen möchten, die auf den meisten Distributionen funktionieren, sollten Sie sie auf einer alten Distribution wie Ubuntu 16.04 erstellen. Sie können eine virtuelle Maschine oder einen Container verwenden, um eine geeignete Build-Umgebung einzurichten.

Um Linux- oder *BSD-Exportvorlagen zu erstellen, führen Sie das Buildsystem mit den folgenden Parametern aus:

  • (32 Bit)

scons platform=linuxbsd target=template_release arch=x86_32
scons platform=linuxbsd target=template_debug arch=x86_32
  • (64 Bit)

scons platform=linuxbsd target=template_release arch=x86_64
scons platform=linuxbsd target=template_debug arch=x86_64

Beachten Sie, dass die Cross-Kompilierung für die gegenüberliegenden Bits (64/32) Ihrer Host-Plattform nicht immer einfach ist und möglicherweise eine chroot-Umgebung erfordert.

Um Standard-Exportvorlagen zu erstellen, müssen die resultierenden Dateien in den Ordner bin/ kopiert werden:

$HOME/.local/share/godot/export_templates/<version>/

...und so benannt werden (sogar für *BSD, das von Godot als "Linux/X11" angesehen wird):

linux_x11_32_debug
linux_x11_32_release
linux_x11_64_debug
linux_x11_64_release

Wenn Sie jedoch Ihre benutzerdefinierten Module oder benutzerdefinierten C++-Code schreiben, sollten Sie Ihre Binärdateien hier als benutzerdefinierte Exportvorlagen konfigurieren:

../../../_images/lintemplates.png

Sie brauchen sie nicht einmal zu kopieren, Sie können einfach auf die resultierenden Dateien im bin/-Verzeichnis Ihres Godot-Stammverzeichnisses verweisen, so dass Sie beim nächsten Build automatisch die benutzerdefinierten Vorlagen referenziert haben.

Nutzen Sie Clang und LLD für eine schnellere Entwicklung

Sie können auch Clang und LLD verwenden, um Godot zu bauen. Dies hat zwei Vorteile im Vergleich zum Standard-GCC + GNU ld Setup:

  • LLD linkt Godot im Vergleich zu GNU ld oder gold deutlich schneller. Dies führt zu schnelleren Iterationszeiten.

  • Clang gibt im Vergleich zu GCC nützlichere Fehlermeldungen.

Um dies zu tun, installieren Sie Clang und das lld-Paket aus dem Paketmanager Ihrer Distribution und verwenden dann den folgenden SCons-Befehl:

scons platform=linuxbsd use_llvm=yes linker=lld

Nachdem der Build abgeschlossen ist, wird eine neue Binärdatei mit dem Suffix .llvm im Ordner bin/ erstellt.

Es wird immer noch empfohlen, GCC für Produktions-Builds zu verwenden, da sie mit Link-Time-Optimierung kompiliert werden können, wodurch die resultierenden Binärdateien kleiner und schneller werden.

Wenn dieser Fehler auftritt:

/usr/bin/ld: cannot find -l:libatomic.a: No such file or directory

...gibt es gibt zwei Lösungen:

  • Fügen Sie in Ihrem SCons-Befehl den Parameter use_static_cpp=no hinzu.

  • Folgen Sie diesen Anweisungen, um libatomic_ops zu konfigurieren, zu bauen und zu installieren. Dann kopieren Sie /usr/lib/libatomic_ops.a nach /usr/lib/libatomic.a oder erstellen Sie einen Softlink zu libatomic_ops mit dem Befehl ln -s /usr/lib/libatomic_ops.a /usr/lib/libatomic.a. Der Softlink stellt sicher, dass die neueste Version von libatomic_ops verwendet wird, ohne dass sie jedes Mal kopiert werden muss, wenn sie aktualisiert wird.

Verwendung von mold für eine schnellere Entwicklung

Für noch schnelleres Linken im Vergleich zu LLD können Sie mold verwenden. mold kann entweder mit GCC oder Clang verwendet werden.

Seit Januar 2023 ist mold nicht mehr ohne weiteres in den Repositories der Linux-Distributionen verfügbar, so dass Sie die Binärdateien manuell installieren müssen.

  • Laden Sie die mold-Binärdateien von der Release-Seite herunter.

  • Entpacken Sie die Datei .tar.gz und verschieben Sie den extrahierten Ordner an einen Ort wie .local/share/mold.

  • Fügen Sie $HOME/.local/share/mold/bin zur PATH-Umgebungsvariable Ihres Benutzers hinzu. Zum Beispiel können Sie die folgende Zeile am Ende Ihrer $HOME/.bash_profile Datei hinzufügen:

PATH="$HOME/.local/share/mold/bin:$PATH"
  • Öffnen Sie ein neues Terminal (oder führen Sie source "$HOME/.bash_profile" aus), dann verwenden Sie den folgenden SCons-Befehl beim Kompilieren von Godot:

    scons platform=linuxbsd linker=mold
    

Verwendung von Systembibliotheken für eine schnellere Entwicklung

Godot bündelt den Quellcode verschiedener Bibliotheken von Drittanbietern. Sie können stattdessen die Systemversionen der Bibliotheken von Drittanbietern verwenden. Dadurch kann die Godot-Binärdatei schneller gelinkt werden, da die Bibliotheken von Drittanbietern dynamisch gelinkt werden. Daher müssen sie nicht jedes Mal statisch gelinkt werden, wenn Sie die Engine bauen (selbst bei kleinen inkrementellen Änderungen).

Allerdings sind nicht für alle Linux-Distributionen Pakete für Bibliotheken von Drittanbietern verfügbar (oder sie sind nicht aktuell).

Der Wechsel zu Systembibliotheken kann die Link-Zeiten auf langsamen CPUs um mehrere Sekunden verkürzen, erfordert aber je nach Linux-Distribution manuelle Tests. Außerdem kann es sein, dass Sie aufgrund von Bugs in den Systembibliotheks-Paketen (oder im Buildsystem, da dieses Feature weniger getestet wird) nicht für alles Systembibliotheken verwenden können.

Um Godot mit Systembibliotheken zu kompilieren, installieren Sie diese Abhängigkeiten zusätzlich zu denen, die in Distro-spezifische Einzeiler aufgeführt sind:

Fedora

sudo dnf install embree3-devel enet-devel glslang-devel graphite2-devel harfbuzz-devel libicu-devel \
    libsquish-devel libtheora-devel libvorbis-devel libwebp-devel libzstd-devel mbedtls-devel \
    miniupnpc-devel

Nachdem Sie alle erforderlichen Pakete installiert haben, verwenden Sie den folgenden Befehl, um Godot zu bauen:

scons platform=linuxbsd builtin_embree=no builtin_enet=no builtin_freetype=no builtin_graphite=no builtin_harfbuzz=no builtin_libogg=no builtin_libpng=no builtin_libtheora=no builtin_libvorbis=no builtin_libwebp=no builtin_mbedtls=no builtin_miniupnpc=no builtin_pcre2=no builtin_zlib=no builtin_zstd=no

Sie können eine Liste aller Built-in-Bibliotheken, die Systemalternativen haben, anzeigen, indem Sie scons -h aufrufen und dann nach Optionen suchen, die mit builtin_ beginnen.

Warnung

Wenn Sie Systembibliotheken verwenden, ist die resultierende Bibliothek nicht mehr über Linux-Distributionen hinweg portierbar. Verwenden Sie diesen Ansatz nicht für die Erstellung von Binärdateien, die Sie an andere weitergeben möchten, es sei denn, Sie erstellen ein Paket für eine Linux-Distribution.

Pyston für eine schnellere Entwicklung nutzen

Sie können Pyston verwenden, um SCons auszuführen. Pyston ist eine JIT-fähige Implementierung der Sprache Python (in der SCons geschrieben ist). Sie ist derzeit nur mit Linux kompatibel. Pyston kann inkrementelle Builds erheblich beschleunigen, oft um einen Faktor zwischen 1,5× und 2×. Pyston kann mit Clang und LLD kombiniert werden, um noch schnellere Builds zu erhalten.

  • Laden Sie das neueste portable Pyston-Release herunter.

  • Entpacken Sie die portable .tar.gz-Datei an einen bestimmten Ort, wie $HOME/.local/opt/pyston/ (erstellen Sie Ordner nach Bedarf).

  • Benutzen Sie cd, um von einem Terminal aus zum entpackten Pyston-Ordner zu gelangen, dann führen Sie ./pyston -m pip install scons aus, um SCons innerhalb von Pyston zu installieren.

  • Um die Ausführung von SCons über Pyston zu vereinfachen, erstellen Sie einen symbolischen Link des Wrapper-Skripts auf einen Ort in Ihrer PATH-Umgebungsvariablen:

    ln -s ~/.local/opt/pyston/bin/scons ~/.local/bin/pyston-scons
    
  • Anstatt scons <build arguments> auszuführen, führen Sie pyston-scons <build arguments> aus, um Godot zu kompilieren.

Wenn Sie pyston-scons nicht ausführen können, nachdem Sie den symbolischen Link erstellt haben, stellen Sie sicher, dass $HOME/.local/bin/ Teil der PATH-Umgebungsvariable Ihres Benutzers ist.

Bemerkung

Alternativ können Sie auch python -m pip install pyston_lite_autoload ausführen und dann SCons wie gewohnt starten. Dies wird automatisch eine Teilmenge der Pyston-Optimierungen in jedes Python-Programm laden, das Sie ausführen. Allerdings bringt dies keine so große Performanceverbesserung im Vergleich zur Installation von "vollem" Pyston.