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

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

Choose your operating system:

Windows

macOS

Linux

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

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

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

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

ツールチェーンの取得

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

UE4 バージョン

ツールチェーン

4.27

-v19 clang-11.0.1-based

4.26

-v17 clang-10.0.1-based

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

-v7 clang-3.7.0-based

4.9 and 4.10

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

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル