Linux (レガシー) のクロス コンパイル

4.14 より前のバージョンを使用しているエンジン ユーザー向けに、Linux プラットフォーム用クロスコンパイルの設定方法を説明します。

Windows
MacOS
Linux

このリファレンスは、4.14 よりも前の Unreal Engine 4 (UE4) のクロスコンパイル ツールの設定が必要なユーザー向けのアーカイブです。

4.14 以降の Unreal Engine をご使用の場合は、「Linux のクロスコンパイル 」を参照してください。

クロスコンパイルが必要な理由

クロスコンパイル により、ゲーム デベロッパーは Linux をターゲットにしながら、Windows 中心のワークフローで作業ができるようになります。今回のクロスコンパイルは Windows のみのサポートとなりますので、Mac ユーザーは現時点においては ネイティブ コンパイル を使用する必要があります。Linux-x86_64 プラットフォーム向けに、ライブラリおよびツールチェーンのサポート、テスト、および提供をしています。

ツールチェーンの取得

次の表を使用して、適切なツールチェーンをダウンロードしてください。

UE4 バージョン

ツールチェーン

4.25

-v16 clang-9.0.1-based

4.23 と 4.24

-v15 clang-8.0.1-based

4.22

-v13 clang-7.0.1-based

4.21

-v12 clang-6.0.1-based

4.19 and 4.20

-v11 clang-5.0.0-based

4.18

-v10 clang-5.0.0-based

4.16 and 4.17

-v9 clang-4.0.0-based

4.14 and 4.15

-v8 clang-3.9.0-based

4.11 thru 4.13

-v7clang-3.7.0-based

4.9 and 4.10

-v6clang-3.6.0-based

4.8 以前

-v4 clang-3.5.0-based

  • ツールチェーンの -v8 から -v13 までの場合、ファイルの抽出、および環境変数 — の設定は必要ありません。インストール パッケージを実行するだけです。

  • ツールチェーンの -v4 から -v7 までの場合、Linux ARM (original Raspberry Pi and up) のコンパイルを可能にするライブラリとツールチェーンも提供しています。

    • ただし、UnrealBuildTool (UBT) で (マイナーな) コード変更が必要になります。

  • 現在、CentOS で Unreal Engine を実行するユーザー向けに AMDGPU-PRO (not RADV) のドライバ サポートを行っております。

ここからの説明は x86_64 Linux をターゲットとする開発ユーザーを想定していますが、ほとんどの情報は ARM のコンパイル (ツールチェーンが異なる場合を除く) にも適用できます。異なるバージョンのツールを使用したり、別のアーキテクチャをターゲットとする場合は、独自のツールチェーンをビルドする ことができます。

ツールチェーンの設定

LINUX_ROOT という名前の環境変数を追加します。この値はツールチェーンの絶対パスです (バックスラッシュはありません)。

[コントロール パネル] -> [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:

  • エディタ自体 (Unreal Editor と Unreal Frontend で Linux 対応のゲームをクック / パッケージ化するために、 Linux ターゲットモジュールビルドを取得するために必要)

  • UnrealPak と ShaderCompileWorker (おそらくビルドされるでしょうが、総合的に言及)

Linux 向けのパッケージング

エディタでパッケージ プロジェクトを開き、[File]>[Package To (パッケージ先)]>[Linux] の順に選択する方法が最も簡単なパッケージ方法です。前の手順でクロスツールチェーンをインストールしておくこと、Linux ターゲットモジュールが対象エディタ用にビルドされていることが前提です。リストに 「Linux」 が表示されない場合は、手順の何かが未完了の可能性があります。上記を参照してください)。サンプリングしばらくすると (対象プロジェクトに依存、サンプル プロジェクトはいくらか短時間) 、パッケージを作成するディレクトリにゲームアセットとバイナリが表示されます。

パッケージ作成プロセスの詳細は、[Show Output Log (出力ログを表示)] リンクをクリックして参照してください。「unable to find UnrealPak or ShaderCompileWorker (UnrealPak または ShaderCompileWorker が見つかりません)」のエラーメッセージがでてプロセスが失敗した場合は、上記のリンクでホスト (Windows) プラットフォーム向けのパッケージのビルド方法をご確認ください。

Secure copy (scp) を実行、もしくはターゲットとするマシンにコピー (そのマシンが容量不足の場合、Samba の設定方法をご存じであれば Samba share を実装すれば反復時間も削減できるので推奨します) して、ターゲット実行ファイルを chmod +x (場所は 「LinuxNoEditor//Binaries/Linux/」ディレクトリ) に指定して実行します。

Linux-ARM プラットフォームの変更

Unreal Engine 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 で実行し、上記の説明に沿って実行します。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback