一、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中更改