Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Компіляція для Linux, *BSD
Дивись також
На цій сторінці описано, як скомпілювати редактор Linux і експортувати двійкові файли шаблону з джерела. Якщо ви натомість хочете експортувати свій проект у Linux, прочитайте Експорт на Linux.
Вимоги
Для того щоб зібрати проєкт під Linux чи який-небудь інший вид Unix системи, вам знадобляться:
GCC 9+ або Clang 6+.
SCons 4.0+ build system.
pkg-config (використовується для виявлення бібліотек розробки, перелічених нижче).
Бібліотеки розробки:
X11, Xcursor, Xinerama, Xi та XRandR.
Wayland і Wayland-сканер.
Меса.
ALSA.
Пульс Аудіо.
За бажанням - libudev (зберіть з параметром
udev=yes
).
Дивись також
Щоб отримати вихідний код Godot для компіляції, перегляньте Отримання джерела.
Для загального огляду використання SCons для Godot див. Знайомство з системою побудови.
Команди для різних дистрибутивів
apk add \
scons \
pkgconf \
gcc \
g++ \
libx11-dev \
libxcursor-dev \
libxinerama-dev \
libxi-dev \
libxrandr-dev \
mesa-dev \
eudev-dev \
alsa-lib-dev \
pulseaudio-dev
pacman -Sy --noconfirm --needed \
scons \
pkgconf \
gcc \
libxcursor \
libxinerama \
libxi \
libxrandr \
wayland-utils \
mesa \
glu \
libglvnd \
alsa-lib \
pulseaudio
sudo apt-get update
sudo apt-get install -y \
build-essential \
scons \
pkg-config \
libx11-dev \
libxcursor-dev \
libxinerama-dev \
libgl1-mesa-dev \
libglu1-mesa-dev \
libasound2-dev \
libpulse-dev \
libudev-dev \
libxi-dev \
libxrandr-dev \
libwayland-dev
sudo dnf install -y \
scons \
pkgconfig \
libX11-devel \
libXcursor-devel \
libXrandr-devel \
libXinerama-devel \
libXi-devel \
wayland-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 --sync
emerge -an \
dev-build/scons \
x11-libs/libX11 \
x11-libs/libXcursor \
x11-libs/libXinerama \
x11-libs/libXi \
dev-util/wayland-scanner \
media-libs/mesa \
media-libs/glu \
media-libs/alsa-lib \
media-sound/pulseaudio
sudo urpmi --auto \
scons \
task-c++-devel \
wayland-devel \
"pkgconfig(alsa)" \
"pkgconfig(glu)" \
"pkgconfig(libpulse)" \
"pkgconfig(udev)" \
"pkgconfig(x11)" \
"pkgconfig(xcursor)" \
"pkgconfig(xinerama)" \
"pkgconfig(xi)" \
"pkgconfig(xrandr)"
pkg_add \
pkg-config \
py37-scons
Підказка
Для забезпечення підтримки звуку ви, якщо хочете, можете встановити pulseaudio
.
pkg_add \
python \
scons \
llvm
sudo apt update
sudo apt install -y \
python3-pip \
build-essential \
pkg-config \
libx11-dev \
libxcursor-dev \
libxinerama-dev \
libgl1-mesa-dev \
libglu1-mesa-dev \
libasound2-dev \
libpulse-dev \
libudev-dev \
libxi-dev \
libxrandr-dev \
libwayland-dev
sudo pip install scons
sudo zypper install -y \
scons \
pkgconfig \
libX11-devel \
libXcursor-devel \
libXrandr-devel \
libXinerama-devel \
libXi-devel \
wayland-devel \
Mesa-libGL-devel \
alsa-devel \
libpulse-devel \
libudev-devel \
gcc-c++ \
libGLU1
eopkg install -y \
-c system.devel \
scons \
libxcursor-devel \
libxinerama-devel \
libxi-devel \
libxrandr-devel \
wayland-devel \
mesalib-devel \
libglu \
alsa-lib-devel \
pulseaudio-devel
Компілювання
Відкрийте термінал, перейдіть до кореневої директорії проєкту та введіть:
scons platform=linuxbsd
Примітка
До Godot 4.0 ціль Linux/*BSD називалася x11
замість linuxbsd
. Якщо ви хочете скомпілювати Godot 3.x, обов’язково використовуйте гілку 3.x цієї документації <https://docs.godotengine.org/en/3.6/development/compiling/compiling_for_x11.html>`__.
Порада
If you are compiling Godot to make changes or contribute to the engine,
you may want to use the SCons options dev_build=yes
or dev_mode=yes
.
See Псевдоніми розробки та виробництва
for more info.
Якщо все піде добре, отриманий двійковий виконуваний файл буде розміщено в підкаталозі "bin". Цей виконуваний файл містить весь механізм і працює без будь-яких залежностей. Після його виконання з’явиться менеджер проекту.
Примітка
Якщо ж вам хочеться зібрати проєкт використовуючи Clang а не GCC, то використайте команду:
scons platform=linuxbsd use_llvm=yes
Використання Clang є обов’язковою умовою для OpenBSD, інакше шрифти не збиратимуться. Для пристроїв з архітектурою RISC-V використовуйте компілятор Clang замість компілятора GCC.
Порада
Якщо ви компілюєте Godot для використання у виробництві, ви можете зробити кінцевий виконуваний файл меншим і швидшим, додавши опцію SCons production=yes
. Це дозволяє додатково оптимізувати компілятор і оптимізувати час зв’язку.
LTO потребує деякий час для запуску та вимагає близько 7 ГБ доступної оперативної пам’яті під час компіляції. Якщо вам не вистачає пам’яті з наведеним вище параметром, використовуйте production=yes lto=none
або production=yes lto=thin
для легкої, але менш ефективної форми LTO.
Примітка
Якщо ви хочете використовувати окремі параметри редактора для власних збірок Godot та офіційних випусків, ви можете ввімкнути Автономний режим, створивши файл під назвою ._sc_
або _sc_
у bin/
папка.
Запуск безголової/серверної збірки
Щоб працювати в режимі headless, який надає функції редактора для автоматичного експорту проектів, використовуйте звичайну збірку:
scons platform=linuxbsd target=editor
А потім скористайтеся аргументом командного рядка --headless
:
./bin/godot.linuxbsd.editor.x86_64 --headless
Щоб зібрати серверну версію, яку можна використати зі сторонніми інструментами дебагу, скористайтесь:
scons platform=linuxbsd target=template_debug
Щоб зібрати серверну версію, оптимізовану для запуску ігрових серверів, скористайтесь:
scons platform=linuxbsd target=template_release production=yes
Збірка шаблонів експорту
Попередження
Зазвичай, програми для Linux не запускаються на дистрибутивах, старіших ніж той, на якому вони побудовані. Якщо ви хочете мати змогу розповсюджувати свою збірку серед більшости дистрибутивів, вам варто зібрати програму на старій версії ОС, на зразок Ubuntu 16.04. Ви можете скористатись віртуальними машинами чи контейнерами щоб підготувати стабільне середовище для збірки.
Щоб створити шаблони експорту Linux або *BSD, запустіть систему збирання з такими параметрами:
(32 біт)
scons platform=linuxbsd target=template_release arch=x86_32
scons platform=linuxbsd target=template_debug arch=x86_32
(64 біт)
scons platform=linuxbsd target=template_release arch=x86_64
scons platform=linuxbsd target=template_debug arch=x86_64
Візьміть до уваги: збірка для протилежної платформи (64/32) може бути складним завданням, та потребувати входу в середовище chroot.
Щоб створити стандартні шаблони експорту, отримані файли в папці bin/
необхідно скопіювати до:
$HOME/.local/share/godot/export_templates/<version>/
і має таку назву (навіть для *BSD, який Годо розглядає як «Linux/X11»):
linux_debug.arm32
linux_debug.arm64
linux_debug.x86_32
linux_debug.x86_64
linux_release.arm32
linux_release.arm64
linux_release.x86_32
linux_release.x86_64
А якщо ви пишете власні модулі чи код на C++ то вам, натомість, краще обрати ваші шаблони експорту тут:

Вам навіть не потрібно копіювати їх файли, достатньо просто вказати їх в підтеці bin/
з теки, де знаходиться код Godot, щоб наступного разу, при збірці, ваші шаблони будуть додані автоматично.
Cross-compiling for RISC-V devices
To cross-compile Godot for RISC-V devices, we need to setup the following items:
riscv-gnu-toolchain. While we are not going to use this directly, it provides us with a sysroot, as well as header and libraries files that we will need. There are many versions to choose from, however, the older the toolchain, the more compatible our final binaries will be. If in doubt, use this version, and download
riscv64-glibc-ubuntu-18.04-nightly-2021.12.22-nightly.tar.gz
. Extract it somewhere and remember its path.mold. This fast linker, is the only one that correctly links the resulting binary. Download it, extract it, and make sure to add its
bin
folder to your PATH. Runmold --help | grep support
to check if your version of Mold supports RISC-V. If you don't see RISC-V, your Mold may need to be updated.
To make referencing our toolchain easier, we can set an environment variable like this:
export RISCV_TOOLCHAIN_PATH="path to toolchain here"
This way, we won't have to manually set the directory location each time we want to reference it.
With all the above setup, we are now ready to build Godot.
Go to the root of the source code, and execute the following build command:
PATH="$RISCV_TOOLCHAIN_PATH/bin:$PATH" \
scons arch=rv64 use_llvm=yes linker=mold lto=none target=editor \
ccflags="--sysroot=$RISCV_TOOLCHAIN_PATH/sysroot --gcc-toolchain=$RISCV_TOOLCHAIN_PATH -target riscv64-unknown-linux-gnu" \
linkflags="--sysroot=$RISCV_TOOLCHAIN_PATH/sysroot --gcc-toolchain=$RISCV_TOOLCHAIN_PATH -target riscv64-unknown-linux-gnu"
Примітка
RISC-V GCC has bugs with its atomic operations
which prevent it from compiling Godot correctly. That's why Clang is used instead. Make sure that
it can compile to RISC-V. You can verify by executing this command clang -print-targets
,
make sure you see riscv64
on the list of targets.
Попередження
The code above includes adding $RISCV_TOOLCHAIN_PATH/bin
to the PATH,
but only for the following scons
command. Since riscv-gnu-toolchain uses
its own Clang located in the bin
folder, adding $RISCV_TOOLCHAIN_PATH/bin
to your user's PATH environment variable may block you from accessing another
version of Clang if one is installed. For this reason it's not recommended to make
adding the bin folder permanent. You can also omit the PATH="$RISCV_TOOLCHAIN_PATH/bin:$PATH"
line
if you want to use scons with self-installed version of Clang, but it may have
compatibility issues with riscv-gnu-toolchain.
The command is similar in nature, but with some key changes. ccflags
and
linkflags
append additional flags to the build. --sysroot
points to
a folder simulating a Linux system, it contains all the headers, libraries,
and .so
files Clang will use. --gcc-toolchain
tells Clang where
the complete toolchain is, and -target riscv64-unknown-linux-gnu
indicates to Clang the target architecture, and OS we want to build for.
If all went well, you should now see a bin
directory, and within it,
a binary similar to the following:
godot.linuxbsd.editor.rv64.llvm
You can now copy this executable to your favorite RISC-V device, then launch it there by double-clicking, which should bring up the project manager.
If you later decide to compile the export templates, copy the above
build command but change the value of target
to template_debug
for
a debug build, or template_release
for a release build.
Використання Clang та LLD для пришвидшення розробки
Ви можете збудувати Godot з Clang та LLD. Вони мають пару переваг у порівнянні зі стандартною зв'язкою GCC + GNU ld:
LLD збирає Godot значно швидше у порівнянні з to GNU ld чи gold. Таким чином збирання проходить швидшими ітераціями.
Clang дає корисніші повідомлення про помилки ніж GCC.
Щоб це зробити, встановіть Clang та пакет lld
з вашого пакетного менеджера та використайте їх в наступній команді:
scons platform=linuxbsd use_llvm=yes linker=lld
Щойно побудова буде завершена, в теці bin/
буде створений новий бінарний файл із суфіксом .llvm
.
Але ми рекомендуємо використовувати GCC для фінальної збірки, так як він дає змогу її оптимізувати: зробити кінцевий бінарний файл меншим та швидшим.
Якщо виникає ця помилка:
/usr/bin/ld: cannot find -l:libatomic.a: No such file or directory
Є два рішення:
У вашій команді SCons додайте параметр
use_static_cpp=no
.Дотримуйтеся цих інструкцій, щоб налаштувати, створити та встановити
libatomic_ops
. Потім скопіюйте/usr/lib/libatomic_ops.a
до/usr/lib/libatomic.a
або створіть програмне посилання наlibatomic_ops
командоюln -s /usr/ lib/libatomic_ops.a /usr/lib/libatomic.a
. М'яке посилання може гарантувати, що останнійlibatomic_ops
буде використовуватися без необхідності копіювати його кожного разу, коли він оновлюється.
Використання цвілі для швидшого розвитку
Для ще швидшого зв’язування порівняно з LLD ви можете використовувати mold. mold можна використовувати з GCC або Clang.
Станом на січень 2023 року mold не доступний у сховищах дистрибутивів Linux, тому вам доведеться інсталювати його двійкові файли вручну.
Завантажте двійкові файли mold зі сторінки випусків <https://github.com/rui314/mold/releases/latest>`__.
Розпакуйте файл
.tar.gz
, а потім перемістіть видобуту папку в таке розташування, як.local/share/mold
.Додайте
$HOME/.local/share/mold/bin
до змінної середовища вашого користувачаPATH
. Наприклад, ви можете додати такий рядок у кінці вашого файлу$HOME/.bash_profile
:
PATH="$HOME/.local/share/mold/bin:$PATH"
Відкрийте новий термінал (або запустіть
source "$HOME/.bash_profile"
), а потім використовуйте таку команду SCons під час компіляції Godot:scons platform=linuxbsd linker=mold
Використання системних бібліотек для прискорення розробки
Godot об’єднує вихідний код різних сторонніх бібліотек. Натомість ви можете використовувати системні версії сторонніх бібліотек. Це робить двійковий файл Godot швидшим для зв’язування, оскільки сторонні бібліотеки зв’язуються динамічно. Таким чином, їх не потрібно статично пов’язувати кожного разу, коли ви створюєте механізм (навіть при невеликих поступових змінах).
Однак не всі дистрибутиви Linux мають пакунки для бібліотек сторонніх розробників (або вони можуть бути неоновленими).
Перехід до системних бібліотек може скоротити час зв’язування на кілька секунд на повільних процесорах, але це вимагає ручного тестування залежно від вашого дистрибутива Linux. Крім того, можливо, ви не зможете використовувати системні бібліотеки для всього через помилки в пакетах системної бібліотеки (або в системі збірки, оскільки ця функція менш перевірена).
To compile Godot with system libraries, install these dependencies on top of the ones listed in the Команди для різних дистрибутивів:
sudo apt-get update
sudo apt-get install -y \
libembree-dev \
libenet-dev \
libfreetype-dev \
libpng-dev \
zlib1g-dev \
libgraphite2-dev \
libharfbuzz-dev \
libogg-dev \
libtheora-dev \
libvorbis-dev \
libwebp-dev \
libmbedtls-dev \
libminiupnpc-dev \
libpcre2-dev \
libzstd-dev \
libsquish-dev \
libicu-dev
sudo dnf install -y \
embree-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
Після встановлення всіх необхідних пакетів скористайтеся такою командою, щоб створити Godot:
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
On Debian stable, you will need to remove builtin_embree=no as the system-provided Embree version is too old to work with Godot's latest master branch (which requires Embree 4).
Ви можете переглянути список усіх вбудованих бібліотек, які мають системні альтернативи, запустивши scons -h
, а потім шукаючи параметри, що починаються з builtin_
.
Попередження
When using system libraries, the resulting binary is not portable across Linux distributions anymore. Do not use this approach for creating binaries you intend to distribute to others, unless you're creating a package for a Linux distribution.