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+.
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 Befehlwhich 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
pacman -S --needed \
scons \
pkgconf \
gcc \
libxcursor \
libxinerama \
libxi \
libxrandr \
mesa \
glu \
libglvnd \
alsa-lib \
pulseaudio
apt-get install \
build-essential \
scons \
pkg-config \
libx11-dev \
libxcursor-dev \
libxinerama-dev \
libgl1-mesa-dev \
libglu-dev \
libasound2-dev \
libpulse-dev \
libudev-dev \
libxi-dev \
libxrandr-dev
dnf install \
scons \
pkgconfig \
libX11-devel \
libXcursor-devel \
libXrandr-devel \
libXinerama-devel \
libXi-devel \
mesa-libGL-devel \
mesa-libGLU-devel \
alsa-lib-devel \
pulseaudio-libs-devel \
libudev-devel \
gcc-c++ \
libstdc++-static \
libatomic-static
pkg install \
py37-scons \
pkgconf \
xorg-libraries \
libXcursor \
libXrandr \
libXi \
xorgproto libGLU \
alsa-lib \
pulseaudio
emerge -an \
dev-util/scons \
x11-libs/libX11 \
x11-libs/libXcursor \
x11-libs/libXinerama \
x11-libs/libXi \
media-libs/mesa \
media-libs/glu \
media-libs/alsa-lib \
media-sound/pulseaudio
urpmi \
scons \
task-c++-devel \
pkgconfig \
"pkgconfig(alsa)" \
"pkgconfig(glu)" \
"pkgconfig(libpulse)" \
"pkgconfig(udev)" \
"pkgconfig(x11)" \
"pkgconfig(xcursor)" \
"pkgconfig(xinerama)" \
"pkgconfig(xi)" \
"pkgconfig(xrandr)"
pkg_add \
python \
scons \
llvm
zypper install \
scons \
pkgconfig \
libX11-devel \
libXcursor-devel \
libXrandr-devel \
libXinerama-devel \
libXi-devel \
Mesa-libGL-devel \
alsa-devel \
libpulse-devel \
libudev-devel \
gcc-c++ \
libGLU1
pkg_add \
pkg-config \
py37-scons
Hinweis
Für Audio-Unterstützung können Sie optional pulseaudio
installieren.
eopkg install -c \
system.devel \
scons \
libxcursor-devel \
libxinerama-devel \
libxi-devel \
libxrandr-devel \
mesalib-devel \
libglu \
alsa-lib-devel \
pulseaudio-devel
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:
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 zulibatomic_ops
mit dem Befehlln -s /usr/lib/libatomic_ops.a /usr/lib/libatomic.a
. Der Softlink stellt sicher, dass die neueste Version vonlibatomic_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
zurPATH
-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 Siepyston-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.