Linux的交叉编译(旧版)

对于4.14以前的引擎版本,本页面将向用户展示如何为Linux平台设置交叉编译。

Windows
MacOS
Linux

此参考是为需要在4.14之前的虚幻引擎4版本(UE4)中设置其交叉编译工具链的用户提供的存档。

如果您正在使用虚幻引擎4.14(或更新版本)开发项目,请参阅

[](SharingAndReleasing/Linux/Basics/GettingStarted)
文档。

为何需要交叉编译

交叉编译(Cross-compilation) 使得在以Windows为中心的工作流程中工作的游戏开发者能够以Linux为目标。目前,只有Windows支持交叉编译。Mac用户目前必须求助于本机编译 。我们为Linux-x86_64平台支持、测试及提供库和工具链。

获取工具链

请使用下表以下载相应的工具链:

UE4版本

工具链

4.26

-v17 clang-10.0.1-based

4.25

-v16 基于clang-9.0.1

4.23和4.24

-v15 基于clang-8.0.1

4.22

-v13 基于clang-7.0.1

4.21

-v12 基于clang-6.0.1

4.19和4.20

-v11 基于clang-5.0.0

4.18

-v10 基于clang-5.0.0

4.16和4.17

-v9 基于clang-4.0.0

4.14和4.15

-v8 基于clang-3.9.0

4.11到4.13

-v7 基于clang-3.7.0

4.9和4.10

-v6 基于clang-3.6.0

4.8及更早版本

-v4 基于clang-3.5.0

  • 工具链 -v8-v13 无需抽取文件或设置环境变量,只需安装程序包即可。

  • 对于工具链 -v4-v7,我们还提供库和工具链,让您能够编译Linux ARM (原始Raspberry Pi和更高版本)。

    • 请注意,这需要您在虚幻构建工具 (UBT)中进行(微小的)代码更改。

  • 我们目前还为在CentOS上运行虚幻引擎的用户提供对AMDGPU-PRO(非RADV)的驱动器支持。

从现在开始,我们假设您的目标是x86_64 Linux,但是下面的大多数信息也适用于ARM的编译(但不包括不同的工具链)。请注意,如果您想要不同版本的工具或以另一种架构为目标,您可以构建您自己的工具链

设置工具链

添加名为 LINUX_ROOT 的环境变量,该变量的值是您工具链的绝对路径(没有后置反斜杠):

控制面板(Control Panel)->系统(System)->高级系统设置(Advanced system settings)->高级(Advanced)->环境变量(Environment variables)

确保设置环境变量后,重新生成UE4项目文件(使用 GenerateProjectFiles.bat)并重启Visual Studio。在此之后,您应该可以使用"Linux"进行Win32/Win64配置(此时您应该能够为其进行交叉编译)。

为Linux设置打包

注意,二进制版本只能打包纯内容性项目。如果您想为Linux打包一个基于代码的项目(或者一个带有非默认第三方插件的项目),您必须设置一个源代码构建。否则,如果您并不介意纯内容性项目,则无需构建任何东西,因为UE4Game和CrashReportClient的Linux二进制文件是绑定的。

若要为Linux平台打包,您需要构建以下目标:

对于Linux:

  • CrashReportClient

  • UE4Game(如果您的项目为纯内容性项目,否则只需构建您的项目即可)。

对于Windows:

  • 编辑器本身(这是构建Linux目标模块所需要的,以便虚幻编辑器和虚幻前端知道如何为Linux烘焙/打包游戏)。

  • UnrealPak和ShaderCompileWorker(您可能已经构建了它们,但是为了妥善起见,我们还是要提及一下)。

为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/ 目录),并运行它。

Linux-ARM平台的更改

随着虚幻引擎4.14版本的发布,ARM平台有了一种新的(且易于遵循的)项目打包方式。请查看我们最近更新的

[](SharingAndReleasing/Linux/Basics/GettingStarted)
文档以了解更多内容。

如果您在运行下面的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 目标可执行文件,并按照上述说明运行它。

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