INTSourceChangelist:3321713 Availability:Public Title:Linux (レガシー) のクロス コンパイル Crumbs: Description:4.14 より前のバージョンのエンジン ユーザー向けに、Linux プラットフォーム用クロスコンパイルの設定方法を説明します。 Version:4.14 SkillLevel:Advanced type:reference parent:Platforms/Linux tags:Linux related:Programming/Development/CompilingProjects related:Programming/Development/BuildConfigurations related:Engine/Basics/Projects/Packaging related:Platforms/Linux/GettingStarted topic-image:LegacyRef_Topic.png [TOC(start:2 end:3)] このリファレンスは、4.14 よりも古いアンリアル エンジン 4 のクロスコンパイル ツールの設定が必要なユーザー向けのアーカイブです。 [REGION:note] ご使用のアンリアル エンジンが 4.14 以降の場合は、[](Platforms/Linux/GettingStarted) を参照してください。 [/REGION] [EXCERPT:Why_XC] ## クロスコンパイルが必要な理由 **クロスコンパイル** をすると、ゲーム デベロッパーは Linux をターゲットにしつつ、Windows を中心にしたワークフローで作業できるようになります。今回、クロスコンパイルは Windows のみのサポートとなりますので、 Mac ユーザーは現在 [native compilation](https://wiki.unrealengine.com/Building_On_Linux) を使用する必要があります。Linux-x86_64 プラットフォーム向けに、ライブラリおよびツールチェーンのサポート、テスト、提供をしています。 [/EXCERPT:Why_XC] ## ツールチェーンの取得 以下の表を使って適切なツールチェーンをダウンロードしてください。 | アンリアル エンジン 4 (UE4) バージョン | ツールチェーン | | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | | **<= 4.8** | -v4 [clang-3.5.0-based](http://cdn.unrealengine.com/qfe/v4_clang-3.5.0_ld-2.24_glibc-2.12.2.zip) | | **4.9 and 4.10** | -v6 [clang-3.6.0-based](https://s3.amazonaws.com/unrealengine/qfe/v6_clang-3.6.0_ld-2.24_glibc-2.12.2.zip) | | **4.11 thru 4.13** | -v7 [clang-3.7.0-based](https://s3.amazonaws.com/unrealengine/CrossToolchain_Linux/v7_clang-3.7.0_ld-2.24_glibc-2.12.2.zip) | | **4.14** | -v8 [clang-3.9.0-based](http://cdn.unrealengine.com/qfe/v8_clang-3.9.0-centos7.zip) | ライブラリとツールチェーン (clang-3.5.0-arm) を提供していますので、Linux ARM (オリジナルの Rasberry Pi 以上) のコンパイルが可能です。ただし、[Unreal Build Tool](Programming/UnrealBuildSystem) (UBT) で 少しだけコード変更が必要になります。 以下の情報のほとんどは ARM のコンパイル (別のツールチェーンを除く) にも通用しますが、ここから先は x86_64 Linux をターゲットに開発を行うユーザーを想定しています。 異なるバージョンのツールや別のアーキテクチャをターゲットとする場合は、[独自のツールチェーンをビルド](https://wiki.unrealengine.com/Building_Linux_cross-toolchain) することができます。 ## ツールチェーンの設定 [Control Panel (コントロールパネル)]->[System (システム)]->[Advanced system settings (詳細システム設定)]->[Advanced (詳細)]->[Environment variables (環境変数)] の順に選んで、`LINUX_ROOT` という名前の環境変数を追加します。この値はツールチェーンの後に続くバックスラッシュなしの絶対パスです。 [REGION:raw] ![](EnvironmentVar.png) [/REGION] 環境変数を設定したら、UE4 プロジェクトファイルを再生成 (「GenerateProjectFiles.bat」を使用) して Visual Studio を再起動します。再起動して Win32/Win64 コンフィギュレーションに "Linux" が表示されれば、 クロスコンパイルが可能です。 ## 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] Linux プラットフォームをパッケージ化するためには、以下のターゲットをビルドする必要があります。 Linux 向け: * CrashReportClient * UE4Game (コンテンツのみのプロジェクトの場合、それ以外はプロジェクトのみをビルド) Windows 向け: * エディタ自体 (Unreal Editor と Unreal Frontend で Linux 対応のゲームをクック / パッケージ化するために、 Linux ターゲットモジュールビルドを取得するために必要) * UnrealPak と ShaderCompileWorker (おそらくビルドされるでしょうが、総合的に言及) [/VAR] [VAR:binary] バイナリ リリースは、コンテンツ専用プロジェクトのみのパッケージを作成できることに注意してください。Linux 向けにコードベースのプロジェクトをパッケージ化する場合 (または規定外のサードパーティプラグインがあるプロジェクト) は、ソースビルドを設定しなくてはいけません。 コンテンツ専用のパッケージ化が必要な場合は、UE4Game と CrashReportClient の Linux バイナリがバンドルされているため何もする必要がありません。 [/VAR] ## 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 プラットフォームの変更 [REGION:note] アンリアル エンジン 4.14 がリリースされ、ARM プラットフォーム向けプラットフォームの新しいパッケージ方法が追加されました。 詳細は最新の [](Platforms/Linux/GettingStarted) をご覧ください。 [/REGION] 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` で実行して、上記の説明通りに実行します。