Files
UnrealEngineUWP/Engine/Documentation/Source/Platforms/Linux/GettingStarted/LinuxCrossGettingStarted.KOR.udn
Sungjin Hong ef5d8a687b #loc UE4DocKOR
[CL 2605488 by Sungjin Hong in Main branch]
2015-06-30 07:53:20 -04:00

107 lines
6.0 KiB
Plaintext

INTSourceChangelist:2591123
Availability:Public
Title: 리눅스 프로젝트 개발 시작하기
Crumbs:%ROOT%, Platforms, Platforms/Linux
Description:리눅스 플랫폼용 개발 셋업하기 입니다.
%Globals:BinarySourceSelectVar%
[TOC(start:2 end:3)]
## 왜 크로스 컴파일인가
크로스 컴파일을 선택한 이유는, (윈도우 중심 작업방식을 갖는 경향이 있는) 게임 개발자가 리눅스를 타겟으로 하기 쉽도록 하기 위함입니다. 현재 이 기능은 윈도우에만 지원되며, 맥 사용자들은 [네이티브 컴파일](https://wiki.unrealengine.com/Building_On_Linux) 에 의존해야 합니다. Linux-x86_64 를 지원 및 테스트는 합니다만, 라이브러리와 툴체인을 (clang-3.5.0-arm) 제공하여 리눅스 ARM 컴파일도 가능은 합니다만 (원래는 Raspberry Pi 이상), UBT 에 (약간의) 코드 변경이 필요할 것입니다.
아래 대부분은 (툴체인이 다르다는 것만 제외하면) ARM 컴파일에도 적용되지만, 여기서는 x86_64 리눅스를 타겟으로 삼는다 가정하겠습니다. 참고로 다른 버전의 툴이나 다른 아키텍처를 타겟으로 삼고자 하는 경우, 툴체인을 [직접 빌드](https://wiki.unrealengine.com/Building_Linux_cross-toolchain) 할 수도 있습니다.
## 툴체인 셋업
LINUX_ROOT 라는 이름의 환경변수를 추가 (제어판->시스템->고급 시스템 세팅->고급->환경 변수), 그 값은 툴체인 절대 경로로 하고, 끝에 백슬래시는 붙이지 않습니다.
![](image00.png)
변수 설정을 확인했으면, UE4 프로젝트 파일을 (GenerateProjectFiles.bat 로) 재생성하고 Visual Studio 를 재시작합니다. 그러고나면 Win32/Win64 환경설정 사이에 "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]
리눅스 플랫폼용 패키징을 위해서는 다음 타겟 빌드를 해줘야 합니다:
리눅스용:
* CrashReportClient
* UE4Game (프로젝트가 콘텐츠 전용인 경우. 아니면 그냥 프로젝트만 빌드하세요).
윈도우용:
* 에디터 자체 (리눅스 타겟 모듈 빌드를 위해 필요한 부분인데, 그래야 언리얼 에디터와 언리얼 프론트엔드가 리눅스용 게임 쿠킹/패키징 방법을 알기 때문입니다).
* UnrealPak, ShaderCompileWorker (어찌됐든 빌드를 해야 하는 부분이지만, 완성도를 위해 언급합니다).
[/VAR]
[VAR:binary]
참고로 바이너리 릴리즈는 콘텐츠 전용 프로젝트만 패키징 가능합니다. 리눅스용 코드 기반 (또는 기본적이지 않은 써드 파티 플러그인이 포함된) 프로젝트를 패키징하려는 경우, 소스 빌드를 구성해야 할 것입니다. 그 외에 콘텐츠 전용으로도 괜찮은 경우, UE4Game 이나 CrashReportClient 의 리눅스 바이너리로 포함시켜 빌드할 필요가 없습니다.
[/VAR]
## 리눅스용 패키징
프로젝트 패키징의 가장 쉬운 방법은 에디터에서 연 다음 파일>패키지 프로젝트>리눅스 로 하는 것입니다 (물론 전 단계에서 크로스 툴체인을 설치했고, 리눅스 타겟 모듈이 해당 에디터 용으로 빌드되었다는 가정하에서입니다. 목록에 리눅스가 보이지 않는다면, 아마도 그 둘 중 하나가 잘못되었을 확률이 높습니다). 얼마 (프로젝트에 따라 다르지만, 샘플 프로젝트라면 꽤나 잠깐) 후, 패키징하도록 선택한 디렉토리에 게임 애셋과 바이너리가 들어갈 것입니다.
패키징 프로세스의 세부사항은 "출력 로그 표시" 링크를 클릭하면 볼 수 있습니다. 이 프로세스가 "UnrealPak 또는 ShaderCompileWorker 를 찾을 수 없다"는 오류 메시지를 내며 실패했다면, 위에서 호스트 (윈도우) 플랫폼용으로 해당 항목을 빌드하는 부분을 참고하시기 바랍니다.
Scp 또는 다른 방법으로 타겟 머신에 복사하고 (Samba 공유 마운팅 방법을 아신다면 타겟 머신의 디스크 공간이 부족한 경우 좋으며, 반복처리 시간도 단축됩니다), 타겟 실행파일을 chmod +x 한 뒤 (그 위치는 LinuxNoEditor/<ProjectName>/Binaries/Linux/ 디렉토리 입니다), 실행합니다.
### 리눅스 ARM 플랫폼용 변경사항
리눅스 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";
리눅스 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 해 준 다음 위 방법대로 실행해 주면 됩니다.