Files
UnrealEngineUWP/Engine/Documentation/Source/Platforms/Linux/AdvancedLinuxDeveloper/LinuxCrossCompileLegacy/LinuxCrossCompileLegacy.KOR.udn
mitchell wilson 62805384bf Copying //UE4/Dev-Documentation to Samples-Main (//UE4/Samples-Main) CL - 4860397
#rb none

#ROBOMERGE-OWNER: ryan.vance
#ROBOMERGE-AUTHOR: mitchell.wilson
#ROBOMERGE-SOURCE: CL 4860421 in //UE4/Main/...
#ROBOMERGE-BOT: DEVVR (Main -> Dev-VR)

[CL 4860484 by mitchell wilson in Dev-VR branch]
2019-01-31 15:44:30 -05:00

159 lines
8.9 KiB
Plaintext

INTSourceChangelist:3877048
Availability:Public
Title: Linux용 크로스 컴파일 (레거시)
Crumbs:%ROOT%
Description:엔진 4.14 미만 버전에서 Linux 플랫폼용 크로스 플랫폼 구성 방법을 알려드립니다.
Version: 4.14
SkillLevel: Advanced
type:reference
parent:Platforms/Linux
tags:Linux
related:Programming/Development/CompilingProjects
related:Programming/Development/BuildConfigurations
related:Engine/Basics/Projects/Packaging
related:Platforms/Linux/GettingStarted
topic-image:LegacyRef_Topic.png
[TOC(start:2 end:3)]
4.14 이전 릴리즈된 언리얼 엔진 4 (UE4) 버전의 크로스 컴파일 툴체인 구성을 하는 사용자를 위한 참고서입니다.
[REGION:note]
언리얼 엔진 4.14 (이상) 버전으로 프로젝트를 개발하시는 경우, [](Platforms/Linux/GettingStarted) 문서를 참고해 보시기 바랍니다.
[/REGION]
[EXCERPT:Why_XC]
## 왜 크로스 컴파일인가
**크로스 컴파일** 덕에 Windows 중심으로 작업하는 게임 개발자들이 Linux를 타깃으로 개발할 수 있습니다. 현재 크로스 컴파일은 Windows에만 지원됩니다.
Mac 사용자들은 [네이티브 컴파일](https://wiki.unrealengine.com/Building_On_Linux) 에 의존해야 합니다. Linux-x86_64 플랫폼용 라이브러이와 툴체인을 지원, 테스트, 제공해 드리고 있습니다.
## 툴체인 구하기
다음 표를 통해 적합한 툴체인을 다운로드할 수 있습니다:
| 툴체인 | UE4 버전 |
| -------------------------------------------------------------------------------------------------------------------------------- | -------------- |
| **-v11** [clang-5.0.0-based](http://cdn.unrealengine.com/CrossToolchain_Linux/v11_clang-5.0.0-centos7.zip) | 4.19 |
| **-v10** [clang-5.0.0-based](http://cdn.unrealengine.com/CrossToolchain_Linux/v10_clang-5.0.0-centos7.zip) | 4.18 |
| **-v9** [clang-4.0.0-based](http://cdn.unrealengine.com/CrossToolchain_Linux/v9_clang-4.0.0-centos7.zip) | 4.16, 4.17 |
| **-v8** [clang-3.9.0-based](http://cdn.unrealengine.com/qfe/v8_clang-3.9.0-centos7.zip) | 4.14, 4.15 |
| **-v7** [clang-3.7.0-based](https://s3.amazonaws.com/unrealengine/CrossToolchain_Linux/v7_clang-3.7.0_ld-2.24_glibc-2.12.2.zip) | 4.11 - 4.13 |
| **-v6** [clang-3.6.0-based](https://s3.amazonaws.com/unrealengine/qfe/v6_clang-3.6.0_ld-2.24_glibc-2.12.2.zip) | 4.9, 4.10 |
| **-v4** [clang-3.5.0-based](http://cdn.unrealengine.com/qfe/v4_clang-3.5.0_ld-2.24_glibc-2.12.2.zip) | - 4.8 |
[REGION:note]
Setup 및 UnSetup Windows 배치(\*.bat) 파일은 **-v9** 에 포함되어 있지 않습니다. UE4 용 AutoSDKs 셋업시에만 필요하기 때문입니다.
`Setup.bat` 및 `Unsetup.bat` 는 (현재 문서화되지 않은) AutoSDKs 시스템의 일부이므로 기존 버전 툴테인에 포함되어 있습니다.
[/REGION]
[Linux ARM](https://s3.amazonaws.com/unrealengine/qfe/arm-unknown-linux-gnueabihf_v5_clang-3.5.0-ld-2.23.1-glibc-2.13.zip) (원본 Raspberry Pi 이상) 용 컴파일을 위한 라이브러이와 툴체인도 제공해 드리고 있습니다만,
이를 위해서는 [언리얼 빌드 툴](Programming/UnrealBuildSystem) (UBT) 에서 약간의 코드 수정을 가해야 할 것입니다.
[/EXCERPT:Why_XC]
아래 대부분은 (툴체인이 다르다는 것만 제외하면) ARM 컴파일에도 적용되지만, 여기서는 x86_64 Linux를 타깃으로 삼는다 가정하겠습니다.
참고로 다른 버전의 툴이나 다른 아키텍처를 타깃으로 삼고자 하는 경우, [툴체인을 직접 빌드](https://wiki.unrealengine.com/Building_Linux_cross-toolchain) 할 수도 있습니다.
## 툴체인 셋업
LINUX_ROOT 라는 이름의 환경변수를 추가 (제어판->시스템->고급 시스템 세팅->고급->환경 변수), 그 값은 툴체인 절대 경로로 하고, 끝에 백슬래시는 붙이지 않습니다.
[REGION:raw]
![](EnvironmentVar.png)
[/REGION]
환경 변수 설정을 확인했으면, UE4 프로젝트 파일을 (GenerateProjectFiles.bat 로) 재생성하고 Visual Studio 를 재시작합니다. 그러고 나면 Win32/Win64 환경설정 사이에 "Linux" 가 있을 것이며,
크로스 컴파일이 가능할 것입니다.
## Linux용 셋업 및 패키징
[OBJECT:ToggleButtonContent]
[PARAMLITERAL:category]
BinarySourceSelect
[/PARAMLITERAL]
[PARAMLITERAL:id]
binaryinstall
[/PARAMLITERAL]
[PARAMLITERAL:active]
active_button_content
[/PARAMLITERAL]
[PARAM:content]
%binary%
[/PARAM]
[/OBJECT]
[OBJECT:ToggleButtonContent]
[PARAMLITERAL:category]
BinarySourceSelect
[/PARAMLITERAL]
[PARAMLITERAL:id]
sourceinstall
[/PARAMLITERAL]
[PARAMLITERAL:active]
[/PARAMLITERAL]
[PARAM:content]
%source%
[/PARAM]
[/OBJECT]
[VAR:source]
Linux 플랫폼용 패키징을 위해서는 다음 타깃 빌드를 해줘야 합니다:
Linux용:
* CrashReportClient
* UE4Game (프로젝트가 콘텐츠 전용인 경우. 아니면 그냥 프로젝트만 빌드하세요).
Windows용:
* 에디터 자체 (Linux 타깃 모듈 빌드를 위해 필요한 부분인데, 그래야 언리얼 에디터와 언리얼 프론트엔드가 Linux용 게임 쿠킹/패키징 방법을 알기 때문입니다).
* UnrealPak, ShaderCompileWorker (어찌됐든 빌드를 해야 하는 부분이지만, 완성도를 위해 언급합니다).
[/VAR]
[VAR:binary]
참고로 바이너리 릴리즈는 콘텐츠 전용 프로젝트만 패키징 가능합니다. Linux용 코드 기반 (또는 기본적이지 않은 써드 파티 플러그인이 포함된) 프로젝트를 패키징하려는 경우, 소스 빌드를 구성해야 할 것입니다.
그 외에 콘텐츠 전용으로도 괜찮은 경우, UE4Game 이나 CrashReportClient 의 Linux 바이너리로 포함시켜 빌드할 필요가 없습니다.
[/VAR]
## Linux용 패키징
프로젝트 패키징의 가장 쉬운 방법은 에디터에서 연 다음 파일>패키지 프로젝트>Linux 로 하는 것입니다 (물론 전 단계에서 크로스 툴체인을 설치했고,
Linux 타깃 모듈이 해당 에디터 용으로 빌드되었다는 가정하에서입니다. 목록에 Linux가 보이지 않는다면, 아마도 그 둘 중 하나가 잘못되었을 확률이 높습니다).
얼마 (프로젝트에 따라 다르지만, 샘플 프로젝트라면 꽤나 잠깐) 후, 패키징하도록 선택한 디렉터리에 게임 애셋과 바이너리가 들어갈 것입니다.
패키징 프로세스의 세부사항은 **출력 로그 표시** 링크를 클릭하면 볼 수 있습니다. 이 프로세스가 "UnrealPak 또는 ShaderCompileWorker 를 찾을 수 없다"는 오류 메시지를 내며 실패했다면, 위에서 호스트 (Windows) 플랫폼용으로 해당 항목을 빌드하는 부분을 참고하시기 바랍니다.
`scp` 또는 다른 방법으로 타깃 머신에 복사하고 (Samba 공유 마운팅 방법을 아신다면 타깃 머신의 디스크 공간이 부족한 경우 좋으며, 반복처리 시간도 단축됩니다), 타깃 실행파일을 `chmod +x` 한 뒤
(그 위치는 `LinuxNoEditor/<ProjectName>/Binaries/Linux/` 디렉터리 입니다), 실행합니다.
### Linux ARM 플랫폼용 변경사항
[REGION:note]
언리얼 엔진 4.14 버전 이후 ARM 플랫폼용 프로젝트 패키징을 할 수 있는 새로운 (그리고 따라하기 쉬운) 방법이 생겼습니다.
자세한 내용은 최근 업데이트된 [](Platforms/Linux/GettingStarted) 문서를 참고하시기 바랍니다.
[/REGION]
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 해 준 다음 위 방법대로 실행해 주면 됩니다.