Files
UnrealEngineUWP/Engine/Documentation/Source/Platforms/Linux/AdvancedLinuxDeveloper/LinuxCrossCompileLegacy/LinuxCrossCompileLegacy.CHN.udn
mitchell wilson 62805384bf Copying //UE4/Dev-Documentation to Samples-Main (//UE4/Samples-Main) CL - 4860397
#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]
2019-01-31 15:44:30 -05:00

170 lines
8.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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]
![](EnvironmentVar.png)
[/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或ShaderCompileWorkerunable 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”目标可执行文件并按照上述说明运行它。