UDK2017 来了

UDK 最近放出了 2017 【参考1】,这种正式的Release能够保证一定能通过编译,是稳定的版本(五月份的时候我抓过一次 EDK2 , 连编译都无法通过)。印象中前一个UDK2015 似乎并没有使用多长时间,看起来 EDK2 仍然在努力发展壮大。

首先下载 Source Code,我选择的是直接通过这个链接下载而不是 GIT 方式:

https://github.com/tianocore/edk2/archive/vUDK2017.zip

解压之后,和之前的一样,需要装一下编译必须的工具才能正常使用。在【参考2】下载edk2-BaseTools-win32。解压之后放在 BaseTools\Bin\Win32目录下。
Conf 目录中还缺少必要的 Target.TXT 之类的配置文件, 我们运行一次 BaseTools下的 Toolsetup.bat 即可。
然后,还需要nasm 这个汇编语言编译器。找到之后,将 nasm丢在 BaseTools\Bin\Win32目录下即可.
最后可以开始编译过程,和之前的命令相同,依然是:

Edksetup.bat
Build.bat

我是用的是 VS2013 X64的环境,编译命令为 build –a X64
ud2017

之后使用 build –a X64 run 启动 NT32 虚拟机:
udk20172

经过实验, 64Bit Application能够正常运行。看起来这是一个重要的改进。我们可以方便的在虚拟机中验证X64的Application了。

为了便于使用,这里放一个配置好的完整代码:

链接: http://pan.baidu.com/s/1boMd6c3 密码: ymxe

后面的程序和代码都会基于 UDK2017 环境.

参考:
1. https://github.com/tianocore/tianocore.github.io/wiki/UDK2017
2. https://github.com/tianocore/tianocore.github.io/wiki/UDK2017-How-to-Build
3. https://github.com/tianocore/edk2-BaseTools-win32

UDK2017 来了》上有 9 条评论

  1. snowman1101

    UDK2017 更改了很多内部代码,以前写的很多源码都不能直接编译,或者编译后不能正常运行。
    现在仍然使用UDK2015

    回复
  2. KRISWANG

    我前两天下载最新版,nt32一直build不过,说找不到windows.h的头文件,我把MinGW的include包进去后,又说关联的String.h里某项有问题。我总不致于去修改头文件吧。请问博主你的Nt32Pkg-Include-Common-WinNTInclude.h文件中需要包含的windows.h放在哪里

    回复
    1. ziv2013 文章作者

      一般是 SDK 版本不匹配导致的,比如: 你系统装的是 X64 的SDk ,但是-a IA32 的时候他要去找 IA32 的 SDK .我应对的办法是:再COPY 一份。比如,提示信息说 program file 下面没有,就去 program file(x86) 里面找一下,然后copy到前者中,一般copy bin 目录即可,差不多50MB 。

      回复
  3. Tim

    以下方式,可以compiler 成功
    Note: 嘗試用TOOL_CHAIN_TAG = VS205x86 ,但compiler 都fail,又改回 TOOL_CHAIN_TAG = VS2012x86 …..就compiler 成功

    1.下載且解開版主的UDK2017-workable.zip.
    2.Download VC compiler tools with virtual studio 2013 u5 and virtual studio 2015
    3 Run Developer Command Propmt for VS2012
    4.Change path to your WORKSPACE (ex D:\UDK2017)
    5.Run Edk2setup
    6.Change compiler environment D:\UEFI\UDK2017\Conf\target.txt
    ACTIVE_PLATFORM = AppPkg/AppPkg.dsc
    TARGET = RELEASE
    TARGET_ARCH = X64
    TOOL_CHAIN_TAG = VS2012x86
    7. type “build -a X64 -p AppPkg\AppPkg.dsc”

    回复
    1. ziv2013 文章作者

      VS2015x86 编译NT32PKG 可以成功的,具体要看错误信息。大概的原因是:UDK 上写的要调用 WDK8.1, 而实际上我们安装的 VS2015 是 WDk8.0 ,目录名称上有一些差别导致无法找到编译工具。我的解决办法是:直接把调用的工具copy到他需要调用的路径下即可。

      回复
  4. Tim

    雖然UDK2017改了很多(例如加的ARM的code ….ARMPkg),而造成某些以前寫程式無法compiler 完成,但我覺得還是要跟上,,,因為UDK 還會一直upgrade, 那我們以前寫的程式就跟不上,最新的BIOS,
    我最近也花了很多時間去修改以前的程式,讓tool的code 可以用UDK2017 compiler 成功
    if 公司的tool需要在ARM system 上run, 但要用UDK2017 compiler 的efi file 才能用,,因UDK2015沒support,那怎麼辦呢? (舉例………..)

    所以我建議還是要debug一下以前寫的code,,,讓其compiler 成功 (debug 是很累,,,但compiler 出現以下訊息,,那種心情是很爽的………………..
    – Done –
    Build end time: 14:43:38, Sep.17 2017
    Build total time: 00:01:14

    以上純屬個人意見,,,,沒有攻擊任何人ㄡ…………….

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注