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.4+ build system.
pkg-config (використовується для виявлення бібліотек розробки, перелічених нижче).
Бібліотеки розробки:
X11, Xcursor, Xinerama, Xi та XRandR.
Wayland і Wayland-сканер.
Mesa.
ALSA.
PulseAudio.
За бажанням - 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 \
gcc-c++ \
libstdc++-static \
wayland-devel
pkg install -y \
devel/scons \
pkgconf \
xorg-libraries \
libXcursor \
libXrandr \
libXi \
xorgproto \
libGLU \
alsa-lib \
pulseaudio \
wayland
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 pkgin
pkgin -y install \
pkg-config \
py313-scons \
wayland \
pulseaudio
pkg_add -I \
scons \
wayland \
pulseaudio
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>`__.
Порада
Якщо ви компілюєте Godot, щоб внести зміни або зробити внесок у механізм, ви можете використати параметри SCons dev_build=yes або dev_mode=yes. Перегляньте Псевдоніми розробки та виробництва для отримання додаткової інформації.
Якщо все піде добре, отриманий двійковий виконуваний файл буде розміщено в підкаталозі "bin". Цей виконуваний файл містить весь механізм і працює без будь-яких залежностей. Після його виконання з’явиться менеджер проекту.
Примітка
Якщо ж вам хочеться зібрати проєкт використовуючи Clang а не GCC, то використайте команду:
scons platform=linuxbsd use_llvm=yes
Використання Clang є обов’язковою умовою для OpenBSD, інакше шрифти не збиратимуться. Для пристроїв з архітектурою RISC-V використовуйте компілятор Clang замість компілятора GCC.
Примітка
Компіляція на деяких платформах, таких як OpenBSD, може вимагати більше пам'яті, ніж доступно за замовчуванням. Щоб збільшити ліміт пам'яті на OpenBSD у межах максимуму для поточного користувача, виконайте команду ulimit -d {new amount in kB}.
Порада
Якщо ви компілюєте Godot для використання у виробництві, ви можете зробити кінцевий виконуваний файл меншим і швидшим, додавши опцію SCons production=yes. Це дозволяє додатково оптимізувати компілятор і оптимізувати час зв’язку.
LTO потребує деякий час для запуску та вимагає близько 7 ГБ доступної оперативної пам’яті під час компіляції. Якщо вам не вистачає пам’яті з наведеним вище параметром, використовуйте production=yes lto=none або production=yes lto=thin для легкої, але менш ефективної форми LTO.
Примітка
Якщо ви хочете використовувати окремі параметри редактора для власних збірок Godot та офіційних випусків, ви можете ввімкнути Автономний режим, створивши файл під назвою ._sc_ або _sc_ у bin/ папка.
Компіляція з підтримкою AccessKit
AccessKit забезпечує підтримку програм зчитування з екрана.
За замовчуванням Godot зібрано з динамічно зв'язаним AccessKit. Ви можете використовувати його, розмістивши accesskit.so поруч із виконуваним файлом.
Примітка
Ви також можете використовувати динамічно зв'язаний AccessKit із шаблонами експорту, перейменуйте SO на accesskit.{architecture}.so та розмістіть їх поруч із виконуваними файлами шаблонів експорту, і бібліотеки будуть автоматично скопійовані під час процесу експорту.
Щоб скомпілювати Godot зі статично зв'язаним AccessKit:
Завантажте попередньо створені статичні бібліотеки з godot-accesskit-c-static library та розпакуйте їх.
Під час збірки Godot додайте
accesskit_sdk_path={path}, щоб вказати SCons, де шукати бібліотеки AccessKit:scons platform=linuxbsd accesskit_sdk_path=<...>
Примітка
За бажанням ви можете самостійно створити бібліотеки godot-angle-static, виконавши наступні дії:
Клонуйте каталог godot-accesskit-c-static та перейдіть до нього.
Виконайте таку команду:
cd accesskit-c
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build
Статичну бібліотеку AccessKit слід зібрати за допомогою того ж компілятора, який ви використовуєте для збірки Godot.
Запуск безголової/серверної збірки
Щоб запустити програму в headless режимі, який забезпечує функціональність редактора для експорту проектів автоматизованим способом, використовуйте звичайну збірку:
scons platform=linuxbsd target=editor
А потім використовуйте аргумент командного рядка --headless:
./bin/godot.linuxbsd.editor.x86_64 --headless
Щоб скомпілювати збірку налагоджувального сервера, яку можна використовувати з remote debugging tools, використовуйте:
scons platform=linuxbsd target=template_debug
Щоб скомпілювати збірку сервера, оптимізовану для роботи виділених ігрових серверів, використовуйте:
scons platform=linuxbsd target=template_release production=yes
Збірка шаблонів експорту
Попередження
Бінарні файли Linux зазвичай не працюють на дистрибутивах, які є старішими за дистрибутив, на якому вони були створені. Якщо ви бажаєте розповсюджувати бінарні файли, які працюють на більшості дистрибутивів, вам слід створити їх на старому дистрибутиві, такому як Ubuntu 20.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, який Godot розглядає як «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, щоб наступного разу, при збірці, ваші шаблони будуть додані автоматично.
Крос-компіляція для пристроїв RISC-V
Для крос-компіляції Godot для пристроїв RISC-V нам потрібно налаштувати такі елементи:
riscv-gnu-toolchain. Хоча ми не будемо використовувати це безпосередньо, воно надає нам sysroot, а також файли заголовків і бібліотек, які нам будуть потрібні. Є багато версій на вибір, однак чим старіший інструментарій, тим суміснішими будуть наші кінцеві бінарні файли. Якщо ви сумніваєтеся, використовуйте цю версію і завантажте
riscv64-glibc-ubuntu-20.04-gcc-nightly-2023.07.07-nightly.tar.gz. Розпакуйте його десь і запам'ятайте шлях до нього.mold. Цей швидкий компонувальник є єдиним, який правильно зв’язує результуючий двійковий файл. Завантажте його, розпакуйте та обов’язково додайте його папку
binдо свого ШЛЯХУ. Запустітьmold --help | grep support, щоб перевірити, чи ваша версія Mold підтримує RISC-V. Якщо ви не бачите RISC-V, можливо, ваш Mold потрібно оновити.
Щоб спростити посилання на наш інструментальний ланцюжок, ми можемо встановити таку змінну середовища:
export RISCV_TOOLCHAIN_PATH="path to toolchain here"
Таким чином, нам не доведеться вручну встановлювати розташування каталогу кожного разу, коли ми хочемо посилатися на нього.
Після всіх наведених вище налаштувань ми готові створити Godot.
Перейдіть до кореневого каталогу вихідного коду та виконайте таку команду збірки:
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 має помилки з його атомарними операціями, які заважають йому правильно компілювати Godot. Ось чому замість нього використовується Clang. Переконайтеся, що він може скомпілюватися до RISC-V. Ви можете перевірити, виконавши цю команду clang -print-targets, переконайтеся, що ви бачите riscv64 у списку цілей.
Попередження
Наведений вище код містить додавання $RISCV_TOOLCHAIN_PATH/bin до PATH, але лише для наступної команди scons. Оскільки riscv-gnu-toolchain використовує власний Clang, розташований у папці bin, додавання $RISCV_TOOLCHAIN_PATH/bin до змінної середовища PATH вашого користувача може заблокувати вам доступ до іншої версії Clang, якщо вона встановлена. З цієї причини не рекомендується робити додавання папки bin постійним. Ви також можете опустити рядок PATH="$RISCV_TOOLCHAIN_PATH/bin:$PATH", якщо ви хочете використовувати scons із самостійно встановленою версією Clang, але це може мати проблеми сумісності з riscv-gnu-toolchain.
Команда подібна за своєю природою, але з деякими ключовими змінами. ccflags і linkflags додають додаткові позначки до збірки. --sysroot вказує на папку, що імітує систему Linux, вона містить усі заголовки, бібліотеки та файли .so, які використовуватиме Clang. --gcc-toolchain повідомляє Clang, де знаходиться повний ланцюжок інструментів, а -target riscv64-unknown-linux-gnu вказує Clang цільову архітектуру та ОС, для яких ми хочемо створити.
Якщо все пройшло добре, тепер ви повинні побачити каталог bin, а в ньому двійковий файл, подібний до такого:
godot.linuxbsd.editor.rv64.llvm
Тепер ви можете скопіювати цей виконуваний файл на свій улюблений пристрій RISC-V, а потім запустити його там подвійним клацанням миші, що має відкрити менеджер проекту.
Якщо пізніше ви вирішите скомпілювати шаблони експорту, скопіюйте наведену вище команду збірки, але змініть значення target на template_debug для збірки налагодження або template_release для збірки випуску.
Використання Clang та LLD для пришвидшення розробки
Ви можете збудувати Godot з Clang та LLD. Вони мають пару переваг у порівнянні зі стандартною зв'язкою GCC + GNU ld:
LLD збирає Godot значно швидше у порівнянні з to GNU ld чи gold. Таким чином збирання проходить швидшими ітераціями.
Clang дає корисніші повідомлення про помилки ніж GCC.
Для цього встановіть Clang та пакет lld з менеджера пакетів вашого дистрибутива, а потім скористайтеся такою командою SCons:
scons platform=linuxbsd use_llvm=yes linker=lld
Щойно побудова буде завершена, в теці bin/ буде створений новий бінарний файл із суфіксом .llvm.
It's still recommended to use GCC for production builds as it's the compiler used for official builds and is more rigorously tested.
Якщо виникає ця помилка:
/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.
sudo apt-get update
sudo apt-get install -y mold
sudo dnf install -y mold
pacman -Sy --noconfirm --needed mold
Після встановлення mold, використовуйте таку команду SCons під час компіляції Godot:
scons platform=linuxbsd linker=mold
Використання системних бібліотек для прискорення розробки
Godot об’єднує вихідний код різних сторонніх бібліотек. Натомість ви можете використовувати системні версії сторонніх бібліотек. Це робить двійковий файл Godot швидшим для зв’язування, оскільки сторонні бібліотеки зв’язуються динамічно. Таким чином, їх не потрібно статично пов’язувати кожного разу, коли ви створюєте механізм (навіть при невеликих поступових змінах).
Однак не всі дистрибутиви Linux мають пакунки для бібліотек сторонніх розробників (або вони можуть бути неоновленими).
Перехід до системних бібліотек може скоротити час зв’язування на кілька секунд на повільних процесорах, але це вимагає ручного тестування залежно від вашого дистрибутива Linux. Крім того, можливо, ви не зможете використовувати системні бібліотеки для всього через помилки в пакетах системної бібліотеки (або в системі збірки, оскільки ця функція менш перевірена).
Щоб скомпілювати Godot із системними бібліотеками, встановіть ці залежності поверх залежностей, перелічених у Команди для різних дистрибутивів:
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 \
libsdl3-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 \
SDL3-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_sdl=no builtin_zlib=no builtin_zstd=no
У стабільній версії Debian вам потрібно буде видалити builtin_embree=no, оскільки надана системою версія Embree надто стара, щоб працювати з останньою master гілкою Godot (для якої потрібен Embree 4).
Ви можете переглянути список усіх вбудованих бібліотек, які мають системні альтернативи, запустивши scons -h, а потім шукаючи параметри, що починаються з builtin_.
Попередження
При використанні системних бібліотек отриманий двійковий файл більше не переноситься між дистрибутивами Linux. Не використовуйте цей підхід для створення двійкових файлів, які ви збираєтеся розповсюдити іншим, якщо ви не створюєте пакет для дистрибутива Linux.