Linux용 크로스 컴파일 (레거시)

엔진 4.14 미만 버전에서 Linux 플랫폼용 크로스 플랫폼 구성 방법을 알려드립니다.

Windows
MacOS
Linux

4.14 이전 릴리즈된 언리얼 엔진 4 (UE4) 버전의 크로스 컴파일 툴체인 구성을 하는 사용자를 위한 레퍼런스입니다.

언리얼 엔진 4.14 (이상) 버전으로 프로젝트를 개발하는 경우, Linux용 크로스 컴파일 문서를 참고해 보시기 바랍니다.

왜 크로스 컴파일인가

크로스 컴파일 덕에 Windows 중심으로 작업하는 게임 개발자들이 Linux를 타깃으로 개발할 수 있습니다. 현재 크로스 컴파일은 Windows에만 지원됩니다. Mac 사용자들은 네이티브 컴파일 에 의존해야 합니다. Linux-x86_64 플랫폼용 라이브러이와 툴체인을 지원, 테스트, 제공해 드리고 있습니다.

툴체인 구하기

다음 표를 통해 적합한 툴체인을 다운로드할 수 있습니다:

UE4 버전

툴체인

4.22

-v13 clang-7.0.1 기반

4.21

-v12 clang-6.0.1 기반

4.19 및 4.20

-v11 clang-5.0.0 기반

4.18

-v10 clang-5.0.0 기반

4.16 맟 4.17

-v9 clang-4.0.0 기반

4.14 및 4.15

-v8 clang-3.9.0 기반

4.11 부터 4.13

-v7 clang-3.7.0 기반

4.9 및 4.10

-v6 clang-3.6.0 기반

4.8 이전

-v4 clang-3.5.0 기반

  • 툴체인 -v8 부터 -v13 의 경우, 파일을 추출하거나 환경 변수를 설정할 필요 없이, 그냥 인스톨러 패키지를 실행하면 됩니다.

  • 툴체인 -v4 부터 -v7 의 경우, Linux ARM (원본 Raspberry Pi 이상)에 대해 컴파일할 수 있는 라이브러리와 툴체인도 제공합니다. 참고로 이는 UnrealBuildTool (UBT)에 (약간의) 코드 수정이 필요합니다.

  • 현재 CentOS 에서 언리얼 엔진을 실행하는 사용자의 경우 AMDGPU-PRO (RADV 제외) 드라이버를 지원합니다.

아래 대부분은 (툴체인이 다르다는 것만 제외하면) ARM 컴파일에도 적용되지만, 여기서는 x86_64 Linux를 타깃으로 삼는다 가정하겠습니다. 참고로 다른 버전의 툴이나 다른 아키텍처를 타깃으로 삼고자 하는 경우, 툴체인을 직접 빌드 할 수도 있습니다.

툴체인 셋업

LINUX_ROOT 라는 환경 변수를 추가하고, 값은 (맨 뒤의 백슬래시를 제외한) 툴체인 절대 경로입니다.

Control Panel->System->Advanced system settings->Advanced->Environment variables 

환경 변수 설정을 확인했으면, UE4 프로젝트 파일을 (GenerateProjectFiles.bat 로) 재생성하고 Visual Studio 를 재시작합니다. 그러고 나면 Win32/Win64 환경설정 사이에 "Linux" 가 있을 것이며, 크로스 컴파일이 가능할 것입니다.

Linux용 셋업 및 패키징

참고로 바이너리 릴리즈는 콘텐츠 전용 프로젝트만 패키징 가능합니다. Linux용 코드 기반 (또는 기본적이지 않은 써드 파티 플러그인이 포함된) 프로젝트를 패키징하려는 경우, 소스 빌드를 구성해야 할 것입니다. 그 외에 콘텐츠 전용으로도 괜찮은 경우, UE4Game 이나 CrashReportClient 의 Linux 바이너리로 포함시켜 빌드할 필요가 없습니다.

Linux 플랫폼용 패키징을 위해서는 다음 타깃 빌드를 해줘야 합니다:

Linux용:

  • CrashReportClient

  • UE4Game (프로젝트가 콘텐츠 전용인 경우. 아니면 그냥 프로젝트만 빌드하세요).

Windows용:

  • 에디터 자체 (Linux 타깃 모듈 빌드를 위해 필요한 부분인데, 그래야 언리얼 에디터와 언리얼 프론트엔드가 Linux용 게임 쿠킹/패키징 방법을 알기 때문입니다).

  • UnrealPak, ShaderCompileWorker (어찌됐든 빌드를 해야 하는 부분이지만, 완성도를 위해 언급합니다).

Linux용 패키징

프로젝트 패키징의 가장 쉬운 방법은 에디터에서 연 다음 파일 > 패키지 프로젝트 > Linux 로 하는 것입니다 (물론 전 단계에서 크로스 툴체인을 설치했고, Linux 타깃 모듈이 해당 에디터 용으로 빌드되었다는 가정하에서입니다. 목록에 Linux가 보이지 않는다면, 아마도 그 둘 중 하나가 잘못되었을 확률이 높습니다). 얼마 (프로젝트에 따라 다르지만, 샘플 프로젝트라면 꽤나 잠깐) 후, 패키징하도록 선택한 디렉터리에 게임 애셋과 바이너리가 들어갈 것입니다.

패키징 프로세스의 세부사항은 출력 로그 표시 링크를 클릭하면 볼 수 있습니다. 이 프로세스가 "UnrealPak 또는 ShaderCompileWorker 를 찾을 수 없다"는 오류 메시지를 내며 실패했다면, 위에서 호스트 (Windows) 플랫폼용으로 해당 항목을 빌드하는 부분을 참고하시기 바랍니다.

scp 또는 다른 방법으로 타깃 머신에 복사하고 (Samba 공유 마운팅 방법을 아신다면 타깃 머신의 디스크 공간이 부족한 경우 좋으며, 반복처리 시간도 단축됩니다), 타깃 실행파일을 chmod +x 한 뒤 (그 위치는 LinuxNoEditor/<ProjectName>/Binaries/Linux/ 디렉터리 입니다), 실행합니다.

Linux ARM 플랫폼용 변경사항

언리얼 엔진 4.14 버전 이후 ARM 플랫폼용 프로젝트 패키징을 할 수 있는 새로운 (그리고 따라하기 쉬운) 방법이 생겼습니다. 자세한 내용은 최근 업데이트된 Linux용 크로스 컴파일 문서를 참고하시기 바랍니다.

Linux ARM 크로스 컴파일 툴체인을 사용하는 경우, GenerateProjectFiles.bat 실행 전 UE4 소스 코드에서 다음 파일을 편집해 줍니다:

.../UnrealEngine/Engine/Source/Programs/UnrealBuildTool/Linux/UEBuildLinux.cs 

여기서 다음 줄을 코멘트로 빼냅니다:

static private string DefaultArchitecture = "x86_64-unknown-linux-gnu"; 

그리고 그 바로 아래 linux-arm 아키텍처 줄의 코멘트 부분을 제거합니다:

//static private string DefaultArchitecture = "arm-unknown-linux-gnueabihf";

Linux ARM 플랫폼에서 패키징된 프로젝트를 실행가능하도록 하려면 추가적인 단계가 필요합니다. 패키징된 프로젝트의 위치가 \foo\bar\SunTemple_Linux 라 가정하고, 다음 위치를 엽니다:

\foo\bar\SunTemple_Linux\LinuxNoEditor\Engine\Binaries\Linux

그리고 libopenal.so.1 을 다음 버전으로 대체합니다:

...\UnrealEngine\Engine\Source\ThirdParty\OpenAL\1.15.1\lib\Linux\arm-unknown-linux-gnueabihf\libopenal.so

...\UnrealEngine 부분은 UE4 소스 코드 위치입니다. libopenal.so 를 libopenal.so.1 로 바꿨는지 확인해 주세요.

이제 프로젝트를 타깃 머신으로 복사하고, 타깃 실행파일을 chmod +x 해 준 다음 위 방법대로 실행해 주면 됩니다.

태그
Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼