UDK安装和编译UEFI程序

    首先看下EDK2中和VS文件的对比,来更好地认识EDK中各个文件是干嘛的:

EDK2VS
.dsc.sln
.inf.proj
package一个项目

在这里插入图片描述

1.安装UDK2

在这里插入图片描述
    安装前需要准备好的下载的东西。全部放在C盘根目录下,比较好操作。(编译OVMF还需要openssl1.1.0)
    另外需要python环境,VS环境。我用的是python3.7和VS2013。VS2013注意要在默认安装目录下。(不要嫌多,网上其他人装这个UEFI用了两三天时间的人才一大堆,提前说好装好有心理准备)
在这里插入图片描述
    在conf目录下target.txt设置生成的模拟器的两个参数,第一个目标处理器改为X64或者IA32(看你处理器),第二个是TOOL_CHAIN工具链改为现在使用的编译器,可以该目录下另一个txt查看你的edk2包支持的VS版本。如果没有你现在安装的VS版本是不行的。
在这里插入图片描述
    活动平台改为MdeModulePkg/MdeModulePkg.dsc(这个是最基础的包,其他的还需要安装组件)。
另外编译线程数更改为3。
在这里插入图片描述
运行edksetup.bat,发现三个环境变量未设置。
set NASM_PREFIX=C:\NASM
set CLANG_BIN=C:\NASM
set CYGWIN_HOME=C:\edk2-master\BaseTools\Bin\CYGWIN_NT-5.1-i686
set PYTHON_HOME=C:\Python37
python环境变量也设上,否则会出很多警告。
在这里插入图片描述
搞好之后就能在该目录使用build命令构建。编译到一半会提示nmake 错误:Vfrcompile…。
在这里插入图片描述
    这时候cd C:\edk2-master\BaseTools\Source\C 执行nmake all,看到上面界面。必须从这儿cd过去,不能从目录那儿打开执行cmd。

    这时候再切换cd C:\edk2-master回去edk2-master目录下执行build命令,就一路畅通直接成功了。
在这里插入图片描述
搞定。

2.编译运行Helloworld.efi

在这里插入图片描述
    在MdeModulePkg的Application目录下有不少示例程序,这里找到了HelloWorld来作示范。
在这里插入图片描述
    build -p MdeModulePkg/MdeModulePkg.dsc -a IA32 -m     MdeModulePkg\Application\HelloWorld\HelloWorld.inf

生成的EFI文件在\Build\NT32IA32\DEBUG_VS2013x86_IA32下。
build run运行模拟器运行EFI文件。

    命令行编译参数说明:
build -p $WORKSPACE/EmulatorPkg/EmulatorPkg.dsc -a X64 -b DEBUG -t GCC5 -D BUILD_64 -D UNIX_SEC_BUILD -n 3
option说明:
-p PLATFORMFILE: 目标平台描述文件
-a TARGETARCH: 目标平台X64/IA32
-b BUILDTARGET: 可选项(DEBUG, RELEASE, NOOPT),将只编译dsc文件中特定的模块
-m MODULEFILE: 编译目标module
-t TOOLCHAIN : 使用目标编译器编译
-n THREADNUMBER : 多线程编译
-D MACROS: Macro格式: “Name [= Value]”,传入宏定义

在这里插入图片描述
    当然也可以用来生成在Windows8 X64版本的X64的EFI程序。

    那么如何编译外来的github项目呢?
    一般github上的UEFI项目都带有.inf文件。
在这里插入图片描述
我们需要在模拟器dsc文件的component块中添加指定inf文件的路径。否则就会报上图错误。

由于这里指定路径是相对于C:\edk2-master目录下,所以我们编译的项目必须放在该目录下。

3.模拟器扩展

    MdeModulePkg模块开发环境包(MdePkg)是一个特殊的包,因为它是构建模块所需的最低基础设施。一个模块可能需要构造额外的包,但是所有的模块都基于MdePkg。通过保持MdePkg非常稳定,它有效地成为一个模块或设备驱动程序工具包,用于构建可以使用各种包集的模块。MdePkg允许构造一系列模块类型。MdePkg可以单独使用,也可以与其他包结合使用来生成模块。MdePkg可以生成定义为base的独立模块,这些模块只使用在MdePkg中定义的base类型的资源。基本模块允许您编写可移植的C代码,可以轻松地移植到任何环境中。MdePkg可用于在C代码中编写SEC。
    MdePkg还可以基于EDK II规范中描述的EDK Il构建环境构建UEFI驱动程序或应用程序。

OvmfPkg/OvmfPkgX64.dsc
OVMF (Open Virtual Machine Firmware ) 旨在支持虚拟机启动的一套edk2 Package
。。。它支持QEMU模拟器。这也正是很多人编译它的原因。
构建该模拟器需要额外添加openssl库的,而且最新的不一定能成功。最好是openssl-1.1.0-stable-SNAP-20180129.tar.gz这个版本。安装方法是:解压下载的文件,然后将全部内容解压到UDK2017\CryptoPkg\Library\OpensslLib 目录下的 Openssl 目录中。
具体方法参考链接http://www.lab-z.com/stu144/
该版本openssl下载地址:https://github.com/openssl/openssl/archive/OpenSSL_1_1_0g.zip
在这里插入图片描述
上图是EDK2安装包中对openssl版本的要求…坑吧?!

首先,感谢任何一个阅读,关注或点赞我博客的朋友!! 当然博客中的任何问题都欢迎大家随时指出! 欢迎有兴趣的人私信留下你的联系方式,我们可以一起沟通,一起学习哦!我的学习交流QQ群366469549。 再次感谢大家的支持!!! 我会再接再厉的!!!

<think>嗯,用户想查找UDK安装教程,我需要先弄清楚UDK是什么。UDK可能指不同的东西,比如Unreal Development Kit或者UEFI Development Kit。根据引用中的内容,用户提到了OpenCore、ACPI 4.1,这些UEFI相关,所以可能是指UEFI Development Kit(UDK)。先确认这一点。 接下来,用户提供的引用里有提到MinGW编译64位二进制文件,安装工具集,配置环境变量,还有psql在CMD下运行的建议。这可能UDK编译环境设置有关。另外,引用3提到了git-bisectOpenCore的编译文件,说明用户可能在进行UEFI相关的开发,需要UDK来构建固件。 用户的问题是需要UDK安装步骤,所以我应该整理出UDK安装指南。根据经验,UDK安装通常涉及克隆仓库、设置环境、编译等步骤。需要参考官方文档,但用户提供的引用中没有直接提到UDK安装步骤,不过引用2里的MinGW安装配置可能相关,因为UDK可能需要交叉编译工具链。 需要确保步骤正确,比如先安装必要的依赖,如Git、Python、NASM,然后配置环境变量,特别是工具的路径。然后克隆EDK2的仓库,因为UDK是EDK2的一个分支。接着设置开发环境,比如运行edksetup.bat来生成配置文件,修改目标平台工具链,最后使用build命令进行编译。 可能的问题包括环境配置错误,工具链路径不正确,或者编译时的依赖缺失。用户之前可能遇到了安装卡住的问题,如引用4提到的,重启解决,所以在步骤中提醒常见问题处理,比如重启、网络问题、权限等。 生成的相关问题需要围绕UDK安装后的配置、常见错误、调试工具以及与其他项目如OpenCore的集成,这样能帮助用户深入解决问题。同时确保回答结构清晰,分步骤说明,让用户能一步步跟随操作,避免遗漏关键点。</think># UDKUEFI Development Kit)安装指南 ### 一、环境准备 1. **安装依赖工具**: - Git客户端(用于代码仓库管理) - Python 3.x(建议3.8+) - NASM汇编器 - 64位编译工具链(如引用[2]所述,需配置MinGW-w64) 2. **配置环境变量**: ```bash # 示例:MinGW工具链路径配置 export PATH="/mingw64/bin:$PATH" ``` ### 二、获取源码 通过Git克隆EDK2仓库(UDK基于EDK2): ```bash git clone https://github.com/tianocore/edk2.git cd edk2 git submodule update --init --recursive ``` ### 三、配置开发环境 1. **生成基础配置文件**: ```bash # Windows环境下执行 edksetup.bat # Linux/macOS环境下执行 . edksetup.sh ``` 2. **修改目标配置**: 编辑`Conf/target.txt`文件,指定编译目标: ```ini ACTIVE_PLATFORM = EmulatorPkg/EmulatorPkg.dsc TOOL_CHAIN_TAG = VS2017 # 或GCC5(根据编译器选择) TARGET_ARCH = X64 ``` ### 四、编译测试 执行编译命令验证环境: ```bash build -p EmulatorPkg/EmulatorPkg.dsc -a X64 ``` 成功后会生成`Build`目录包含编译结果[^2][^3]。 ### 五、常见问题处理 1. **编译卡顿**:检查网络代理设置,或如引用[4]建议尝试重启环境 2. **工具链错误**:确认MinGW路径是否在`PATH`中,如引用[2]所述 3. **Python依赖缺失**:通过`pip install -r requirements.txt`安装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摔不死的笨鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值