UE4 Linux용 Cross Compile
윈도우에서 리눅스용 서버 프로세스를 빌드 하기 위함
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