(1) Ubuntu 20.04 添加源
$sudo vim /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
$sudo apt update
(2)安装依赖包
$sudo apt install git python3 python3-distutils uuid-dev nasm bison flex
$sudo apt install gcc g++ build-essential qemu qemu-system
$sudo apt install libx11-dev x11proto-xext-dev libxext-dev
(3)安装gcc-5 并配置多版本gcc
$apt install gcc-5 g++-5
$sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40
$sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 40
$sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50
$sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 50
$sudo update-alternatives --config gcc
$sudo update-alternatives --config g++
(4)获取源代码和编译
$git config --global url."https://hub.fastgit.org".insteadOf https://github.com
$git clone https://github.com/tianocore/edk2.git
$git clone https://github.com/tianocore/edk2-libc.git
$git clone https://github.com/acpica/acpica.git
$cd edk2
$git submodule update --init
$cd ..
$make -C edk2/BaseTools
$make -C acpica/
$gvim mybuild.sh
#!/bin/bash
export WORKSPACE=$PWD
export PACKAGES_PATH=$PWD/edk2:$PWD/edk2-libc
export IASL_PREFIX=$PWD/acpica/generate/unix/bin/
export PYTHON_COMMAND=/usr/bin/python3
$sudo chmod a+x mybuild.sh
$source ./mybuild.sh
$source source edk2/edk2setup.sh
$build -p edk2/EmulatorPkg/EmulatorPkg.dsc -a X64 -t GCC5
(5)坑
(a) 强制将Os 变成O0, 即不优化
(b)报 [RegisterFilterLib] is not found, 将自己的dsc文件中添加
!include MdePkg/MdeLibs.dsc.inc
