You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rb none #ROBOMERGE-OWNER: ryan.vance #ROBOMERGE-AUTHOR: mitchell.wilson #ROBOMERGE-SOURCE: CL 4860421 in //UE4/Main/... #ROBOMERGE-BOT: DEVVR (Main -> Dev-VR) [CL 4860484 by mitchell wilson in Dev-VR branch]
170 lines
8.3 KiB
Plaintext
170 lines
8.3 KiB
Plaintext
INTSourceChangelist:3877048
|
||
Availability:Public
|
||
Title:Linux的交叉编译(旧版)
|
||
Crumbs:%ROOT%
|
||
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版本(UE4)中设置其交叉编译工具链的用户提供的存档。
|
||
|
||
[REGION:note]
|
||
如果您正在使用虚幻引擎4.14(或更新版本)开发项目,请参阅[](Platforms/Linux/GettingStarted)文档。
|
||
[/REGION]
|
||
|
||
[EXCERPT:Why_XC]
|
||
(#whycross-compilation)
|
||
## 为何需要交叉编译
|
||
|
||
**交叉编译(Cross-compilation)** 使得在以Windows为中心的工作流程中工作的游戏开发者能够以Linux为目标。目前,只有Windows支持交叉编译。
|
||
Mac用户目前必须求助于[本机编译](https://wiki.unrealengine.com/Building_On_Linux)。我们为Linux-x86_64平台支持、测试及提供库和工具链。
|
||
|
||
(#gettingthetoolchain)
|
||
## 获取工具链
|
||
|
||
请使用下表以下载相应的工具链:
|
||
|
||
| 工具链 | UE4版本 |
|
||
| -------------------------------------------------------------------------------------------------------------------------------- | -------------- |
|
||
| **-v11** [基于clang-5.0.0](http://cdn.unrealengine.com/CrossToolchain_Linux/v11_clang-5.0.0-centos7.zip) | 4.19 |
|
||
| **-v10** [基于clang-5.0.0](http://cdn.unrealengine.com/CrossToolchain_Linux/v10_clang-5.0.0-centos7.zip) | 4.18 |
|
||
| **-v9** [基于clang-4.0.0](http://cdn.unrealengine.com/CrossToolchain_Linux/v9_clang-4.0.0-centos7.zip) | 4.16和4.17 |
|
||
| **-v8** [基于clang-3.9.0](http://cdn.unrealengine.com/qfe/v8_clang-3.9.0-centos7.zip) | 4.14和4.15 |
|
||
| **-v7** [基于clang-3.7.0](https://s3.amazonaws.com/unrealengine/CrossToolchain_Linux/v7_clang-3.7.0_ld-2.24_glibc-2.12.2.zip) | 4.11到4.13 |
|
||
| **-v6** [基于clang-3.6.0](https://s3.amazonaws.com/unrealengine/qfe/v6_clang-3.6.0_ld-2.24_glibc-2.12.2.zip) | 4.9和4.10 |
|
||
| **-v4** [基于clang-3.5.0](http://cdn.unrealengine.com/qfe/v4_clang-3.5.0_ld-2.24_glibc-2.12.2.zip) | 4.8及更早版本|
|
||
|
||
[REGION:note]
|
||
安装和卸载Windows批处理文件(Setup and UnSetup Windows Batch Files)(\*.bat)不包括在 **-v9** 中,因为如果您要为UE4设置AutoSDK,您只需要这些文件。
|
||
“Setup.bat”和“Unsetup.bat”包括在之前的工具链版本中,因为它们是AutoSDK系统的一部分(目前未记录该系统)。
|
||
[/REGION]
|
||
|
||
我们还提供允许您为[Linux ARM](https://s3.amazonaws.com/unrealengine/qfe/arm-unknown-linux-gnueabihf_v5_clang-3.5.0-ld-2.23.1-glibc-2.13.zip)(原始Raspberry Pi和更高版本)进行编译的库和工具链。
|
||
不过,这需要您在[虚幻构建工具](Programming/UnrealBuildSystem) (UBT)中进行(微小的)代码更改。
|
||
[/EXCERPT:Why_XC]
|
||
|
||
从现在开始,我们假设您的目标是x86_64 Linux,但是下面的大多数信息也适用于ARM的编译(但不包括不同的工具链)。
|
||
请注意,如果您想要不同版本的工具或以另一种架构为目标,您可以[构建您自己的工具链](https://wiki.unrealengine.com/Building_Linux_cross-toolchain)。
|
||
|
||
(#settingupthetoolchain)
|
||
|
||
## 设置工具链
|
||
|
||
添加名为“LINUX_ROOT”的环境变量(“控制面板(Control Panel)->系统(System)->高级系统设置(Advanced system settings)->高级(Advanced)->环境变量(Environment variables)”),该变量的值是您工具链的绝对路径(没有后置反斜杠):
|
||
|
||
[REGION:raw]
|
||

|
||
[/REGION]
|
||
|
||
确保设置环境变量后,重新生成UE4项目文件(使用“GenerateProjectFiles.bat”)并重启Visual Studio。在此之后,您应该可以使用“Linux”进行
|
||
Win32/Win64配置(此时您应该能够为其进行交叉编译)。
|
||
|
||
(#settinguppackagingforlinux)
|
||
|
||
## 为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:
|
||
|
||
* 编辑器本身(这是构建Linux目标模块所需要的,以便虚幻编辑器和虚幻前端知道如何为Linux烘焙/打包游戏)。
|
||
* UnrealPak和ShaderCompileWorker(您可能已经构建了它们,但是为了妥善起见,我们还是要提及一下)。
|
||
|
||
[/VAR]
|
||
|
||
[VAR:binary]
|
||
注意,二进制版本只能打包纯内容性项目。如果您想为Linux打包一个基于代码的项目(或者一个带有非默认第三方插件的项目),您必须设置一个源代码构建。
|
||
否则,如果您并不介意纯内容性项目,则无需构建任何东西,因为UE4Game和CrashReportClient的Linux二进制文件是绑定的。
|
||
[/VAR]
|
||
|
||
(#packagingforlinux)
|
||
|
||
## 为Linux打包
|
||
|
||
打包项目最简单的方法是在编辑器中打开它,然后使用“文件(File)->打包至(Package To)->Linux”(假设您在前面的步骤中安装了一个交叉工具链,并且
|
||
为相关编辑器构建了Linux目标模块 - 如果您在列表中没有看到Linux,那么很可能之前的某个步骤存在错误 - 见上文)。一段时间之后(这段时间取决于相关项目,并且对于示例项目来说相当短暂),
|
||
您将在选择打包到的目录中获得游戏资源和二进制文件。
|
||
|
||
单击 **显示输出日志(Show Output Log)** 链接可查看打包过程的详细信息。如果这个过程失败并显示错误消息,“无法找到UnrealPak或ShaderCompileWorker(unable to find UnrealPak or ShaderCompileWorker)”,请参阅上文关于为主机(Windows)平台构建它们的说明。
|
||
|
||
安全复制(“scp”)或以其他方式将其复制到目标机器(挂载Samba共享 - 如果您知道如何执行此操作 - 如果目标机器磁盘空间不足,这种方法效果可能会更好,而且也会减少迭代时间),更改模式(“chmod+x”)可执行文件
|
||
(将位于“LinuxNoEditor/<ProjectName>/Binaries/Linux/”目录),并运行它。
|
||
|
||
(#changesforlinux-armplatforms)
|
||
|
||
### Linux-ARM平台的更改
|
||
|
||
[REGION:note]
|
||
随着虚幻引擎4.14版本的发布,ARM平台有了一种新的(且易于遵循的)项目打包方式。
|
||
请查看我们最近更新的[](Platforms/Linux/GettingStarted)文档以了解更多内容。
|
||
[/REGION]
|
||
|
||
如果您在运行下面的GenerateProjectFiles.bat之前使用Linux-ARM交叉编译工具链,请以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”目标可执行文件,并按照上述说明运行它。
|
||
|