Linux的交叉编译(旧版)

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

Choose your operating system:

Windows

macOS

Linux

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

如果你正在使用虚幻引擎4.14(或更新版本)开发项目,请参阅 Linux交叉编译 文档。

为何需要交叉编译

交叉编译(Cross-compilation) 使得在以Windows为中心的工作流程中工作的游戏开发者能够以Linux为目标。目前,只有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

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和更高版本)。

  • 我们目前还为在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平台有了一种新的(且易于遵循的)项目打包方式。请查看我们最近更新的 Linux交叉编译 文档以了解更多内容。

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

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消