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...
iOS로 내보내기
더 보기
이 페이지는 소스로부터 Linux 편집기와 내보내기 템플릿 바이너리를 컴파일하는 방법을 설명합니다. 프로젝트를 Linux로 내보내고자 한다면, 대신 Linux로 내보내기를 읽으세요.
요구 사항
Linux 또는 기타 Unix 변형에서 컴파일하려면 다음이 필요합니다.
GCC 9+ 또는 Clang 6+.
SCons 4.4+ build system.
pkg-config(아래 나열된 개발 라이브러리를 감지하는 데 사용됨)
개발 라이브러리:
X11, Xcursor, Xinerama, Xi 및 XRandR.
Wayland와 wayland-scanner.
Mesa.
ALSA.
PulseAudio.
선택 사항 - libudev (
udev=yes로 빌드).
더 보기
컴파일을 위한 Godot 소스 코드를 얻으려면 :ref:`doc_getting_source`를 참조하세요.
Godot의 SCons 사용법에 대한 일반적인 개요는 :ref:`doc_introduction_to_the_buildsystem`를 참조하세요.
배포판별 단일 라이너
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 대상이 linuxbsd 대신 ``x11``로 불렸습니다. 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``를 사용할 수 있습니다. 자세한 내용은 :ref:`doc_introduction_to_the_buildsystem_development_and_production_aliases`를 참조하세요.
모든 것이 순조롭게 진행되면 결과 바이너리 실행 파일이 "bin" 하위 디렉터리에 배치됩니다. 이 실행 파일에는 전체 엔진이 포함되어 있으며 종속성 없이 실행됩니다. 이를 실행하면 프로젝트 관리자가 나타납니다.
참고
GCC 대신 Clang을 사용하여 컴파일하려면 다음 명령을 사용하세요.
scons platform=linuxbsd use_llvm=yes
Clang을 사용하는 것은 OpenBSD의 요구 사항인 것으로 보입니다. 그렇지 않으면 글꼴이 빌드되지 않습니다. RISC-V 아키텍처 장치의 경우 GCC 컴파일러 대신 Clang 컴파일러를 사용하십시오.
참고
OpenBSD와 같은 일부 플랫폼에서 컴파일하려면 기본적으로 사용 가능한 것보다 더 많은 메모리가 필요할 수 있습니다. 현재 사용자의 최대값 내에서 OpenBSD의 메모리 제한을 늘리려면 ``ulimit -d {new amount in kB}``를 실행하십시오.
ANGLE 지원으로 컴파일하기
AccessKit은 스크린 리더를 지원합니다.
기본적으로 Godot는 동적으로 연결된 AccessKit으로 구축됩니다. 실행 파일 옆에 ``accesskit.so``를 배치하여 사용할 수 있습니다.
참고
내보내기 템플릿과 함께 동적으로 연결된 AccessKit을 사용할 수도 있고, SO 이름을 ``accesskit.{architecture}.so``로 바꾸고 내보내기 템플릿 실행 파일과 함께 배치하면 내보내기 프로세스 중에 라이브러리가 자동으로 복사됩니다.
정적으로 링크된 AccessKit으로 Godot를 컴파일하려면:
godot-cpp 저장소 의 사본.
Godot를 빌드할 때 ``accesskit_sdk_path={path}``를 추가하여 SCons에게 AccessKit 라이브러리를 찾을 위치를 알려주세요:
scons platform=linuxbsd accesskit_sdk_path=<...>
참고
선택적으로 다음 단계에 따라 godot-angle-static 라이브러리를 직접 구축할 수 있습니다:
godot-cpp 저장소 의 사본.
다음 예제에서:
cd accesskit-c
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build
AccessKit 정적 라이브러리는 Godot 빌드에 사용하는 것과 동일한 컴파일러를 사용하여 빌드해야 합니다.
출시 빌드에서 실행 중
자동화된 방식으로 프로젝트를 내보내는 편집기 기능을 제공하는 헤드리스 모드에서 실행하려면 일반 빌드를 사용하십시오.
scons platform=linuxbsd target=editor
사용자 지정 명령줄 인수를 파싱합니다.
./bin/godot.linuxbsd.editor.x86_64 --headless
:ref:`원격 디버깅 도구 <doc_command_line_tutorial>`과 함께 사용할 수 있는 디버그 서버 빌드를 컴파일하려면 다음을 사용하세요.
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>/
그리고 이름은 다음과 같습니다(Godot에서는 "Linux/X11"로 표시되는 *BSD의 경우에도):
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++ 코드를 작성하는 경우 대신 프로젝트 내보내기 메뉴에서 바이너리를 사용자 정의 내보내기 템플릿으로 구성할 수 있습니다. 이를 설정하려면 **고급 옵션**을 활성화해야 합니다.
복사할 필요도 없고 Godot 소스 폴더의 bin/ 디렉터리에 있는 결과 파일을 참조하면 다음 번에 빌드할 때 자동으로 사용자 정의 템플릿이 참조됩니다.
RISC-V 장치용 크로스 컴파일
RISC-V 장치용 Godot를 크로스 컴파일하려면 다음 항목을 설정해야 합니다:
riscv-gnu-toolchain. 이것을 직접 사용하지는 않지만 sysroot와 필요한 헤더 및 라이브러리 파일을 제공합니다. 선택할 수 있는 버전은 많지만, 툴체인이 오래될수록 최종 바이너리의 호환성이 높아집니다. 의심스러운 경우 `이 버전 <https://github.com/riscv-collab/riscv-gnu-toolchain/releases/tag/2023.07.07>`__을 사용하고 ``riscv64-glibc-ubuntu-20.04-gcc-nightly-2023.07.07-nightly.tar.gz``를 다운로드하세요. 어딘가에 추출하고 경로를 기억하십시오.
금형. 이 빠른 링커는 결과 바이너리를 올바르게 연결하는 유일한 링커입니다. 다운로드하고 압축을 푼 후
bin폴더를 PATH에 추가하세요. ``mold --help | grep support``를 실행하여 사용 중인 Mold 버전이 RISC-V를 지원하는지 확인하세요. RISC-V가 표시되지 않으면 금형을 업데이트해야 할 수도 있습니다.
툴체인을 더 쉽게 참조하기 위해 다음과 같이 환경 변수를 설정할 수 있습니다.
export RISCV_TOOLCHAIN_PATH="path to toolchain here"
이렇게 하면 참조할 때마다 디렉터리 위치를 수동으로 설정할 필요가 없습니다.
위의 모든 설정을 통해 이제 Godot를 빌드할 준비가 되었습니다.
KineticBody2D에 스크립트를 연결하고 다음 코드를 추가합니다:
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를 올바르게 컴파일하지 못하게 하는 원자 연산에 버그 <https://github.com/riscv-collab/riscv-gcc/issues/15>`__가 있습니다. 이것이 Clang이 대신 사용되는 이유입니다. RISC-V로 컴파일할 수 *있는지* 확인하세요. ``clang -print-targets` 명령을 실행하여 확인할 수 있습니다. 대상 목록에 ``riscv64``가 표시되는지 확인하세요.
경고
위의 코드에는 PATH에 $RISCV_TOOLCHAIN_PATH/bin``를 추가하는 작업이 포함되어 있지만 다음 ``scons 명령에만 해당됩니다. riscv-gnu-toolchain은 bin 폴더에 있는 자체 Clang을 사용하므로 사용자의 PATH 환경 변수에 $RISCV_TOOLCHAIN_PATH/bin``를 추가하면 설치된 다른 버전의 Clang에 액세스하지 못하게 될 수 있습니다. 이러한 이유로 bin 폴더를 영구적으로 추가하는 것은 권장되지 않습니다. 자체 설치된 Clang 버전과 함께 scons를 사용하려는 경우 ``PATH="$RISCV_TOOLCHAIN_PATH/bin:$PATH" 줄을 생략할 수도 있지만 riscv-gnu-toolchain과의 호환성 문제가 있을 수 있습니다.
이 명령은 본질적으로 유사하지만 몇 가지 주요 변경 사항이 있습니다. ccflags 및 linkflags``는 빌드에 추가 플래그를 추가합니다. ``--sysroot``는 Linux 시스템을 시뮬레이션하는 폴더를 가리키며, 여기에는 Clang이 사용할 모든 헤더, 라이브러리 및 ``.so 파일이 포함되어 있습니다. ``--gcc-toolchain``는 Clang에게 완전한 툴체인이 어디에 있는지 알려주고, ``-target riscv64-unknown-linux-gnu``는 Clang에게 우리가 구축하려는 대상 아키텍처와 OS를 알려줍니다.
모든 것이 순조롭게 진행되면 이제 bin 디렉터리가 표시되고 그 안에 다음과 유사한 바이너리가 표시됩니다.
godot.linuxbsd.editor.rv64.llvm
이제 이 실행 파일을 즐겨 사용하는 RISC-V 장치에 복사한 다음 두 번 클릭하여 실행할 수 있습니다. 그러면 프로젝트 관리자가 나타납니다.
나중에 내보내기 템플릿을 컴파일하기로 결정한 경우 위의 빌드 명령을 복사하되 디버그 빌드의 경우 target 값을 ``template_debug``로 변경하고 릴리스 빌드의 경우 ``template_release``로 변경합니다.
더 빠른 개발을 위해 Clang 및 LLD 사용
Clang과 LLD를 사용하여 Godot를 구축할 수도 있습니다. 이는 기본 GCC + GNU ld 설정에 비해 두 가지 장점이 있습니다.
LLD는 GNU ld나 gold에 비해 Godot를 상당히 빠르게 연결합니다. 이로 인해 반복 시간이 더 빨라집니다.
Clang은 GCC에 비해 더 유용한 오류 메시지를 제공하는 경향이 있습니다.
이렇게 하려면 배포판의 패키지 관리자에서 Clang 및 lld 패키지를 설치한 후 다음 SCons 명령을 사용하세요.
scons platform=linuxbsd use_llvm=yes linker=lld
빌드가 완료되면 접미사가 .llvm``인 새 바이너리가 ``bin/ 폴더에 생성됩니다.
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``를 구성, 빌드 및 설치하려면 `이 지침 <https://github.com/ivmai/libatomic_ops#installation-and-usage>`__을 따르세요. 그런 다음 ``/usr/lib/libatomic_ops.a``를 ``/usr/lib/libatomic.a``에 복사하거나 ``ln -s /usr/lib/libatomic_ops.a /usr/lib/libatomic.a명령을 사용하여 ``libatomic_ops``에 대한 소프트 링크를 만듭니다. 소프트 링크를 사용하면 업데이트될 때마다 복사할 필요 없이 최신 ``libatomic_ops``가 사용되도록 할 수 있습니다.
내보내기 소개
LLD에 비해 더 빠른 연결을 위해 `mold <https://github.com/rui314/mold>`__을 사용할 수 있습니다. Mold는 GCC 또는 Clang과 함께 사용할 수 있습니다.
sudo apt-get update
sudo apt-get install -y mold
sudo dnf install -y mold
pacman -Sy --noconfirm --needed mold
명령줄 툴이 설치되면 다음 sdkmanager 명령을 실행하여 설치 과정을 완료합니다:
scons platform=linuxbsd linker=mold
내보내기 소개
Godot는 다양한 타사 라이브러리의 소스 코드를 번들로 제공합니다. 대신 타사 라이브러리의 시스템 버전을 사용하도록 선택할 수 있습니다. 타사 라이브러리가 동적으로 연결되므로 Godot 바이너리를 더 빠르게 연결할 수 있습니다. 따라서 엔진을 빌드할 때마다(작은 증분 변경이라도) 정적으로 링크할 필요가 없습니다.
그러나 모든 Linux 배포판에 사용 가능한 타사 라이브러리용 패키지가 있는 것은 아닙니다(또는 최신 버전이 아닐 수도 있습니다).
시스템 라이브러리로 이동하면 느린 CPU에서 연결 시간을 몇 초 정도 줄일 수 있지만 Linux 배포판에 따라 수동 테스트가 필요합니다. 또한 시스템 라이브러리 패키지(또는 빌드 시스템의 버그로 인해 이 기능은 덜 테스트되었기 때문에) 모든 용도에 시스템 라이브러리를 사용하지 못할 수도 있습니다.
시스템 라이브러리로 Godot를 컴파일하려면, :ref:`doc_compiling_for_linuxbsd_oneliners`에 나열된 것 중 맨 위에 다음 종속성을 설치하십시오:
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 stable에서는 시스템 제공 Embree 버전이 Godot의 최신 master 브랜치(Embree 4 필요)와 작동하기에는 너무 오래되었기 때문에 `builtin_embree=no`를 제거해야 합니다.
``scons -h``를 실행한 다음 ``builtin_``로 시작하는 옵션을 찾아 시스템 대안이 있는 모든 내장 라이브러리 목록을 볼 수 있습니다.
경고
시스템 라이브러리를 사용할 때 결과 바이너리는 더 이상 Linux 배포판 간에 이식 가능하지 않습니다. Linux 배포판용 패키지를 만드는 경우가 아니면 다른 사람에게 배포하려는 바이너리를 만드는 데 이 접근 방식을 사용하지 마세요.