图片版
前言
本文针对Ubuntu系统,使用其他系统开发或不使用apt进行包管理,需要自行修改命令。
笔者使用bash作为默认shell环境。
在Ubuntu 18.04、Ubuntu 20.04、Ubuntu 22.04下测试通过。
配置开发环境
1 | 安装必要依赖 |
(可选)配置交叉编译器
如果需要编译与本机CPU架构不同的UEFI,需要配置对应的交叉编译工具。
以下示例是:X86平台编译AARCH64平台的UEFI
1 | 下载交叉编译器并解压 |
获取Edk2最新源代码
1 | 克隆主仓库代码 |
(可选)获取C语言标准库代码
以上代码不包含C语言标准库,如果需要使用C语言标准库,可以按照下面方法下载。
克隆edk2-libc仓库,复制AppPkg、StdLib、StdLibPrivateInternalFiles这3个文件夹到Edk2源代码目录。
1 | git clone https://github.com/tianocore/edk2-libc.git |
编译 & 运行
准备工作
- 编译基本工具,一般情况下只需要编译一次。
1 | 代码根目录执行 |
- 加载开发环境,每个Shell环境都需要执行一次
1 | 代码根目录执行 |
(可选)编译并运行模拟器
执行以下命令编译模拟器,下附编译成功图片。
1 | 编译模拟器 |
执行以下命令,输入“run”运行
(故障排除)基本工具编译失败
可能是gcc版本过高,或者python版本不正确引起的。编译基本工具使用的是本机的gcc和python,与安装的交叉编译工具无关。
gcc错误
可以尝试降级gcc,或者修改配置文件,下面提供修改配置文件的方法。
Python错误
如果在“test_xxx”出错,一般是python脚本出错,这种情况推荐直接更换python版本。
不同的代码要求的pyhton版本不一样,暂时没有研究出版本对照表。
常见问题
- 推荐使用bash作为默认shell,使用其他的(如:zsh)可能出现一些奇怪的问题。
- 缺少X11 Lib或xext执行以下命令。
sudo apt-get install x11proto-xext-dev libxext-dev