UnrealEngine/Setting

UE4 Linux용 Cross Compile

Carmada 2021. 5. 6. 07:46

윈도우에서 리눅스용 서버 프로세스를 빌드 하기 위함

 

1. 소스로 부터 컴파일된 언리얼 엔진을 열어 코드 수정을 한다.

LinuxToolChain.cs 를 찾아 아래와 같이 내용 수정

 

Result += " -Wall -Werror";// 원래 있던 코드
Result += " -Wno-nonportable-include-path";//linux build 때문에 추가
Result += " -Wno-ignored-attributes";//linux build 때문에 추가
Result += " -fdeclspec";//linux build 때문에 추가

빌드 새로 한다. 오래 걸림

 

2. 리눅스 환경을 세팅한다. WSL(Windows Subsystem for Linux)

이를 위해 마이크로 소프트 앱스토어로 이동해서 

 

현재 시점 AWS fleet은 2018 버전이다.

 

그러므로 ubuntu 18.04 를 받는다. (참고로 생각 없이 20.04 로 했다가 헬에 빠졌었다)

 

설치하면 계정과 비번을 입력하게 되고 실행할 수 있게 된다. (에러가 난다면 아래 확인)

 

에러의 원인 windows 기능 켜고/끄기

체크 하고 컴퓨터 다시 시작

어디서든 cmd 켜고 bash 입력하면 리눅스 환경에서 작업이 가능해짐

다시 윈도우 환경으로 나오려면 exit 입력

윈도우 버튼을 눌러 cmd 실행 시킴, bash  입력 후

프로그램 설치

가. sudo apt-get update

나. sudo apt install vim

다. sudo apt install cmake

라. sudo apt install g++ (gcc 버전 관리 방법)

마. sudo apt install libssl-dev

바. sudo apt install libcurl4-openssl-dev

사. sudo apt install zlib1g-dev

 

※ cmake upgrade ( ubuntu 18.04 의 경우 cmake 의 버전이 낮아서 빌드가 안됨 cmake 버전 업그레이드 방법 )

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates gnupg software-properties-common wget

wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add -

sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'

sudo apt-get update

sudo apt-get install cmake

 

 

3. aws gamelift 관리형 서버 sdk 다운로드 및 빌드

aws.amazon.com/ko/gamelift/getting-started/

압축풀어서

GameLift_12_22_2020\GameLift-SDK-Release-4.0.2 밑의

GameLift-Cpp-ServerSDK-3.4.1 폴더를

작업할 곳에 복사 또는 이동

 

해당 폴더에 out 폴더 생성

out 폴더 내부에서 cmd  또는 바로 bash

가. cmake -DBUILD_FOR_UNREAL=1 ".."

나. make

끝나면 에러나 나있음

아래 경로에 있는

.../out/GameLift-Cpp-ServerSDK-3.4.1/out/thirdparty/sioclient/lib/websocketpp/websocketpp/transport/asio/security/

 

tls.hpp 파일 아래와 같이 수정

310줄 정도에 있는 

if (ERR_GET_REASON(ec.value()) == SSL_R_SHORT_READ)

if (ERR_GET_REASON(ec.value()) == SSL_F_SSL_READ)

로 수정

 

다시 make

 

GameLift-Cpp-ServerSDK-3.4.1/out/prefix/lib 안에 libaws-cpp-sdk-gamelift-server.so 파일이 생성 됨

 

unreal 프로젝트의 아래 경로에

DroneProject\Plugins/GameLiftServerSDK/ThirdParty/GameLiftServerSDK/Linux/x86_64-unknown-linux-gnu

해당 파일 ( libaws-cpp-sdk-gamelift-server.so ) 복붙

 

 

Linux build bat file 예

set UE4_PATH=E:\DoubleBears\UE425DB_Total\Engine
set UPROJECT=%cd%\DBDroneSimulatorTest.uproject
set PLATFORM=Linux
set DIR_ARCHIVE=E:\DoubleBears\DroneBuild\Server
set BUILD_OPTIONS=-nocompile -nocompileeditor -noP4 -build -cook -newcook -distribution -stage -pak -package -prereqs -server -noclient -iterate
pushd E:\DoubleBears\UE425DB_Total\Engine\Build\BatchFiles
CALL RunUAT.bat BuildCookRun^
 -project=%UPROJECT%^
 -platform=%PLATFORM%^
 -serverconfig=Development^
 -archive -archivedirectory=%DIR_ARCHIVE%^
 %BUILD_OPTIONS%
pause