首页 > 编程知识 正文

Ue4调用K2node,ue4源码编译

时间:2023-05-03 10:01:47 阅读:61976 作者:3629

(请保留-作者:正在努力的芹菜https://blog.csdn.net/luobing4365 ) ) )。

我最近看了github上的edk2的发行代码,注意到了一个问题。 现在发布的方式略有不同。 过了一段时间,将发布完整的软件包源代码,例如2018年3月发布的UDK2018。 我一直在用这个开发。 但是没有找到UDK2019。 不能说是UDK2020。

我为什么关注这个呢? 主要是因为这种打包的源代码组织有序、稳定,还提供了完整的API文档。 另外,如果直接git e dk2的主线,则可以看到编程时软件包不足。 另外,还有一些软件包需要在谷歌的项目中下载。 (观察https://github.com/tianocore/edk2上的. gitmodules即可得知)

既然没有更新的软件包源,就只能通过git下载和编译最新的EDK2。 但是,github感人的下载网速,没有一定的力量,真的扛不住。

在以前的博客中,其实已经给出了解决方法。 但是,我们没有详细描述如何构建最新的EDK2编译环境。 正好在这个博客上完全说了。

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/http://www.Sina.com /

具体方法请参考我以前的博客:

3359 blog.csdn.net/luobing 4365/article/details/105658274

或者

使用3358 yi iyee.cn/blog/2020/04/21/gitee下载github项目/

关于edk2,我经常使用的项目是edk2、edk2-platforms和edk2-libc,它们的github地址分别如下:

3359 github.com/tianocore/e dk2.git

3359 github.com/tianocore/e dk2-platforms.git

3359 github.com/tianocore/e dk2-libc.git

要更新子模块,还需要以下库:

33559 github.com/OpenSSL/OpenSSL

3359 github.com/UC B- bar/Berkeley-soft float-3.git

3359 git.crypto milk.org/projects/c mocka.git

https://github.com/kkos/oniguruma

https://github.com/google/brotli

将它们全部导入gitee仓库,供以后使用。

http://www.Sina.com/http://www.Sina.com /

(在以下示例中,gitee上的仓库由我私有,其他人无法下载。 请换成自己的仓库)

在下载源代码之前,必须安装必要的编译工具,如Visual Studio、Python、ASL和Nasm。 安装方法在22篇博客中已经讨论过(UEFI开发探索22-环境构建3 ),所以不重复。

首先需要安装Windows版的git工具。 下载地址为https://git-SCM.com/download/GUI/win。 下载后点击安装就可以了。

右键单击并选择" Git Bash Here ",创建新的工作目录,然后获取三个常用项目的源代码。 命令如下:

$mkdir UEFIWorkspace

$cd UEFIWorkspace

$ gitclonegit @ gitee.com : luobing 4365/e dk2.git

$ gitclonegit @ gitee.com : luobing 4365/e dk2-libc.git

$ gitclonegit @ gitee.com : luobing 4365/e dk2-platforms.git

要更新submodules,必须更改edk2目录中的. gitmodules。 如果不更改,将在更新时下载到github。

将edk2.gitmodules的内容更改为。 (请注意用自己的gitee仓库替换。 )

[ submodule " crypto pkg/library/OpenSSL lib/OpenSSL " ]

path=crypto pkg/library/OpenSSL lib/OpenSSL

URL=git @ gitee.com : luobing 4365/OpenSSL.git

[ submodule“软件浮动”]

path=ar mpkg/library/armsoftfloatlib/Berkeley-soft float-3

URL=git @ gitee.com : luobing 4365/berke

ley-softfloat-3.git
[submodule “UnitTestFrameworkPkg/Library/CmockaLib/cmocka”]
         path = UnitTestFrameworkPkg/Library/CmockaLib/cmocka
         url = git@gitee.com:luobing4365/cmocka.git
[submodule “MdeModulePkg/Universal/RegularExpressionDxe/oniguruma”]
         path = MdeModulePkg/Universal/RegularExpressionDxe/oniguruma
         url = git@gitee.com:luobing4365/oniguruma.git
[submodule “MdeModulePkg/Library/BrotliCustomDecompressLib/brotli”]
         path = MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
         url = git@gitee.com:luobing4365/brotli.git
[submodule “BaseTools/Source/C/BrotliCompress/brotli”]
         path = BaseTools/Source/C/BrotliCompress/brotli
         url = git@gitee.com:luobing4365/brotli.git

然后进入edk2的目录,更新submodules,否则会影响后面BaseTools的编译。

$cd ekd2
$git submodule update --init

如果以后需要更新edk2,可以在edk2的目录下打开git bash,使用如下命令:

$git pull
$git submodule update

源码下载完成,可以准备搭建环境了。

编译BaseTools

这个步骤比较简单,打开VS2015的Native命令行,进入edk2,执行:

C:UEFIWorkspaceedk2> edksetup.bat Rebuild

编译完成后,工作目录的结构如下:

图1 源码结构目录

编译UEFI程序

在图1中,有一个名为“mybuild.bat”的批处理文件,这是为了以UEFIWorkspace为编译的工作目录而写的。

在以前使用UDK2018的时候,edk2-libc下的三个包文件AppPkg、StdLib、StdLibPrivateInternalFiles,被直接放在了UDK2018的目录下,与其他的包放在一起。这样可以直接编译,不用设置库的寻找路径。

但是,当使用edk2-platforms的时候,我实在不想把这个项目的所有文件也一起拷贝到edk2的目录中去,这会让整个edk2目录臃肿无比,也很不利于查找文件。

所以,我写了mybuild.bat,用来保持现在这种简洁的目录结构。这个批处理文件的内容为:

@REM 为保持比较清爽的目录而编写的,同时也方便编译新添加的各种包。
@REM Copyright (c) 2020-2030, Robin
@echo off
set WORKSPACE=%CD%
set EDK_TOOLS_PATH=%CD%edk2BaseTools
set CONF_PATH=%CD%edk2Conf
set PACKAGES_PATH=%CD%edk2;%CD%edk2-libc
@echo Set the Workspace.  -by robin 20200515

使用也比较简单,在执行edksetup.bat之前执行它就可以了。以编译AppPkg为例,命令如下(打开VS2015的编译命令行):

C:UEFIWorkspace> mybuild.bat
C:UEFIWorkspace> edk2edksetup.bat
C:UEFIWorkspace> build -p edk2-libcAppPkgAppPkg.dsc -t VS2015x86 -a IA32

所编译出的程序在C:UEFIWorkspaceBuild下。

新的特性

最新的edk2中(当前我使用的是2020年3月份的版本),已经取消了NT32Pkg这个模拟器了,取而代之的是EmulatorPkg。

让人高兴的是,新的模拟器终于提供了64位程序的支持了!再也不用为了测试64位的efi程序,还要特意打开VirtualBox或者Qemu来进行测试了。把执行文件拷贝到虚拟机的镜像里,是有点麻烦,有时甚至不如直接用实际的机器,用U盘拷贝文件去测试来得快。

另外,这也意味着,应该可以直接使用Visual Studio自带的调试器,调试64位的代码了。

EmulatorPkg的编译,之前在Linux下已经试过,编译命令如下:

C:UEFIWorkspace> build -p edk2 EmulatorPkgEmulatorPkg.dsc -t VS2015x86 -a X64

编译出来的模拟器名称为WinHost.exe,位于BuildEmulatorX64DEBUG_VS2015x86X64下,双击运行即可。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。