一、EDK2源码下载

上一片笔记中已经下载了git工具这里用git工具来下载edk2源码及编译工具
首先从github中将edk文件导入到我们的gittee仓库中再从我们的gitee仓库中下拉到我们的本地仓库(本地计算机)

1.edk2工具从github中导入到gitee仓库中

点击https://github.com/tianocore
点击后如下图搭建EDK2环境我们所需要的工具有edk2 、edk2-platforms 、edk2-libc

这里已edk2为例导入到我们的gittee仓库
双击edk2 会显示如下界面,点击code复制工具链接

然后回到我们的gitee仓库点击+选择从github或gitlab中导入仓库,将刚刚复制的链接复制到git仓库URL中后直接点击导入,则将edk2导入到了我们的gitee仓库中

“注意!!! 在github下复制的链接要和gitee中所需要的协议相同,用http协议”
我们还需要用到第三方的库用同样的方法从github中导入到gitee中,并不需要下拉到本地仓库,下面是第三方库的链接。
https://github.com/openssl/openssl
https://github.com/ucb-bar/berkeley-softfloat-3.git
https://git.cryptomilk.org/projects/cmocka.git
https://github.com/kkos/oniguruma
https://github.com/google/brotli

2.将edk2工具下拉到本地仓库

在git下点击我的仓库会发现我的仓库中已经有了我们需要的edk2工具

点击EDK2后点击克隆选择SSH复制链接,打开git bash shell 输入命令:git clone
“刚刚复制的仓库的地址” 加粗字体为刚刚复制的仓库地址
这步是从我们的远程仓库中下载edk2源码下载到我们的本地仓库也就是我们的电脑中
注意!!! edk2下载的路径为我们打开git bash shell 的路径
用同样的方法将其他两个edk2工具下载下来。

更新.gitmodule(子模块)文件,将第三方库加载到我们的edk2项目中。

这一步是为了在edk2中使用第三方库,没有第三方的库在编译时会报错
打开edk2文件下的.gitmodule文件,找到我们gitee对应的仓库的网址将url修改为我们自己仓库的地址

注意链接格式可能是http可能是ssh按照默认格式更改
最后在edk2目录下打开git bash shell 输入命令git submodule updata --init(修改后更新子模块)
等待一段时间后,输入gitee的用户名(不是邮箱)和密码即可更新成功。

二、 环境准备

1.安装c编译器 ,这里安装visual studio 2019

在官网下载后安装时选择C++ 桌面版的包 ,安装时可自定义安装路径,安装的IDE Package 尽量安装在同一路径下,Tools默认路径为c盘 想更改的话删除注册表下的Vs的路径。

2.安装IASL编译器

IASL用于编译.asl文件。.asl文件为高级配置和电源接口的源文件。
安装时可自定义

3.python

安装时要将add to path勾选上,配置环境变量,否则需要手动添加python的环境变量
安装时可自定义

4.安装NASM

官网版本库:https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D
下载地址:https://www.nasm.us/pub/nasm/releasebuilds/2.15.02/win64/
安装时可自定义

三、修改环境变量

1.添加nasm的环境变量

2.添加python环境变量(安装python时添加了可忽略)
在path添加python路径

3.添加iasl路径(也可修改edk2目录下的工具定义文件tools_def.txt路径)
在path路径下添加iasl路径

四、 修改配置文件

1.编译base tools(编译工具)

在edk文件下打开shell输入初始化命令:

edksetup.bat    //初始化编译环境
edksetup.bat rebuild  这个步骤把build 命令加入到环境变量中,并且生成默认的conf文件

2.修改配置文件

(1)修改配置文件(target.txt)
在edk2目录下的conf文件中,打开target.txt修改下面的属性选项属性名=属性选项 如果没有将base tools 文件中的target。txt文件复制到conf文件中,

TARGET_ARCH = X64                         // 修改属性选项为X64 根据电脑属性配置
TOOL_CHAIN_TAG = VS2019                   //  编译器选项 这里安装是VS2019的编译器

这两个个选项根据自己安装的工具配置。其他属性选项默认即可
(2)修改工具文件(tools_def.txt)如果在环境变量中添加了path可忽略此步骤
接着修改tools_def.txt文件 将iasl工具添加到文件中,打开edk2路径下的tools_def.txt文件搜索VS_2017__ASL_PATH属性名将属性选项更改为iasl.exe所在的路径

路径后必须加上.exe文件否则编译时报错

五、编译

1.再次编译base tools 更新target文件并生成build命令

进入edk2文件下打开cmd依次输入如下命令

edksetup.bat rebuild
edksetup.bat
build

等待编译成功后会显示如下信息:

至此环境已搭建完毕

六、 运行模拟环境

build命令结束后在edk2\Build\EmulatorX64\DEBUG_VS2019\X64路径下编译生成的模拟虚拟环境wenhost.exe

双击执行

build一些参数及选项说明

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]",传入宏定义

build 命令 默认编译可在target中更改

EDK2源码下载及环境搭建相关推荐

  1. build怎么调试 react_React源码下载-本地环境搭建

    前几天有小伙伴和我聊天,谈到现在前端面试越来越难,动不动就是xxx原理,有没有看过xx源码之类的问题, 之后就问我应该怎么来学习现在主流框架的源码,于是有了这一篇文章. 说到使用react那很简单 r ...

  2. ffmpeg编译gb28181_RTSP/GB28181协议/海康SDK/Ehome协议视频上云网关EasyCVR视频平台在linux环境下ffmpeg源码单步调试环境搭建...

    目前TSINGSEE青犀视频研发的视频上云服务平台EasyCVR已经可集成海康EHome私有协议,并且在前文中我也跟大家讲过EHome协议的配置和调用流程,有兴趣的可以阅读一下:配置及协议介绍.Eho ...

  3. 【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★

    文章目录 一.Android 进程注入工具开发系列博客 二.Android 进程注入工具 源码下载编译 三.逆向环境搭建 四.使用注入工具进行逆向操作 1.获取远程进程号 2.注入工具准备 3.注入动 ...

  4. Disconf介绍,源码下载,环境准备,安装,disconf-web使用和配置介绍,项目中进行配置,项目案例运行

    1.disconf介绍 Distributed Configuration Management Platform(分布式配置管理平台)专注于各种 分布式系统配置管理 的通用组件 / 通用平台,提供统 ...

  5. Mycat源码篇 : 起步,Mycat源码阅读调试环境搭建

    在研究mycat源码之前必须先把环境搭建好.这篇文章的目标就是搭建mycat源码调试环境.环境主要包括: git jdk maven eclipse mysql 这里假设你知道上面的知识点.我们搭建的 ...

  6. 4.2.10 Kafka源码剖析, 阅读环境搭建, broker启动流程, topic创建流程, Producer生产者流程, Consumer消费者流程,

    目录 4.1 Kafka源码剖析之源码阅读环境搭建 4.1.1 安装配置Gradle 4.1.2 Scala的安装和配置 4.1.3 Idea配置 4.1.4 源码操作 4.2 Kafka源码剖析之B ...

  7. Elasticsearch源码解析:环境搭建

    在之前学习Redis的过程中,我就是一边通过文档/视频学习,一边阅读源码.我发现两种方法可以相辅相成,互相补充.阅读文档可以帮助我们快速了解某个功能,阅读源码有助于我们更深入的理解这一功能的实现及思想 ...

  8. Spring5源代码研究01:源码导入与环境搭建(完美无错误)

    为了阅读分析Spring 5源代码,需要搭建环境将源代码导入到本地.我们使用IntelliJ IDEA作为IDE工具来分析源码.网上有很多教程要么太老,要么没有经过实践验证,要么不完美报一堆错误. 本 ...

  9. AOSP 安卓源码-ubuntu开发环境搭建

    VM及Utuntu安装 Vmware安装/Ubuntu安装 系统安装 Vmware环境配置 安装Vmware-tools:     tar -xf xxx.tar.gz     sudo ./vmwa ...

最新文章

  1. 入职后发现公司是外包全职_我如何通过全职工作,伴侣和3岁的双胞胎男孩打造产品...
  2. 高通msm8994手动提升性能脚本
  3. 完整的url以及同源跨域处理
  4. 硬件基础:理解串口通信以及232,485,422常见问题
  5. memcached client for java api,Memcached Client Forjava API
  6. rdd数据存内存 数据量_Spark 性能优化(二)——数据倾斜优化
  7. gcc(g++)头文件搜索路径与库文件搜索路径(转载)
  8. [转]诺顿最新升级ID
  9. 数据结构与算法经典问题解析 Java语言描述pdf
  10. BT文件分享服务器,bt是什么意思服务(bt资源库)
  11. Java 给PPT添加动画效果(预设动画/自定义动画)
  12. 全网最全斗音短视频新老账号起号技巧
  13. vue获取浏览器的指纹码
  14. Vulkan_Shader—天空盒原理及源码
  15. 实操石英钟改5V充电器供电
  16. C++中 itoa 和 atoi 的用法
  17. 每天一例多线程[day18]-----ThreadPoolExecutor
  18. 一篇让你熟练掌握Java常用工具包(全网最全)
  19. 易飞ERP客户问题集合之一
  20. c#调用华为北向接口--HTTPS

热门文章

  1. php月份转英文缩写,将日期转换成时间戳 strtotime
  2. python安装报错error: pybind11 2.10+ requires MSVC 2017 or newer
  3. linux环境下java输出乱码,linux java 输出乱码问题
  4. Java微信开发(通过java程序获取用户个人信息)
  5. Excel中如何制作双斜线表头和倾斜表头?简单到两步就搞定
  6. cocos creator微信棋牌小游戏 幼麟棋牌服务端分析笔记
  7. c语言实现图书借阅系统
  8. 机器学习实践—基于Scikit-Learn、Keras和TensorFlow2第二版—第9章 无监督学习技术(Chapter9_Unsupervised_Learning_Techniques)
  9. PAT乙级练习题1030 完美数列
  10. mysql错误1146解决方法