EDK2的开发环境搭建主要包含X86,ARM,龙芯等平台,此处为了学习为目的只讲解在X86_64平台上的ubuntu22.04环境上搭建开发环境。
1 源码获取
EDK2 主仓库:
#git clone https://github.com/tianocore/edk2.git
#cd
#edk2 git submodule update --init
#cd ..
edk2-non-osi 存放许可证、与主仓库不兼容的代码以及非开源二进制等程序等:
#git clone https://github.com/tianocore/edk2-non-osi.git
edk2-platforms 存放平台相关代码:
#git clone https://github.com/tianocore/edk2-platforms.git
uefi-tools 辅助编译脚本(可以不用):
#git clone https://git.linaro.org/uefi/uefi-tools.git
源码获取完整后的目录入下图:
2 安装依赖工具
# sudo apt install git gcc g++ build-essential gcc-aarch64-linux-gnu iasl yasm python3-pyelftools uuid-dev
3 编译源码
官方编译:
. edk2/edksetup.sh
make -C edk2/BaseTools
build -n $NUM_CPUS -a AARCH64 -t GCC5 -p Platform/ARM/JunoPkg/ArmJuno.dsc
使用uefi-tools编译:
/uefi-tools/edk2-build.sh juno
4 问题解决
当出现缺少如下图头文件时,采用如下方法解决:
# git clone https://github.com/google/brotli.git
#cp -rf brotli/* edk2/BaseTools/Source/C/BrotliCompress/brotli/