目錄

edk2 Cross Build for Aarch64

1 在 x86 的機器上 cross build Aarch64 的 EFI driver

在前一篇的基礎下,我們已經可以 compile 出 edk2 的 EFI 檔,並且可以在 QEMU 下模擬了。但如果想要 build 出 Aarch64 可以用的版本,就要用到 cross build 了。

一般來說,一般 Intel 的系統應該都會是 x86_64,所以實際上是使用 i386amd64,而這兩者也都有出現在 dpkg-architecture -L 列表中。但我們現在需要安裝 Arm64 的 build 環境,所以需要增加需要的架構。

1
2
3
4
5
6
# 增加支援 arm64
sudo dpkg --add-architecture arm64
# 更新 apt list
sudo apt update
# 安裝 crossbuild-essential-arm64
apt install crossbuild-essential-arm64
提示

uname -a 目前機器使用的架構

dpkg-architecture -L 查看可用的架構

提示

2021/02/28 備註:

其實 sudo dpkg --add-architecture arm64 這個動作不需要做就可以直接安裝 crossbuild-essential-arm64

接下來就可以 cross build Aarch64 binary 啦

2 How to cross build

1
2
3
4
5
# 加上 prefix,為什麼要這樣改可以查看 Conf/tools_def.txt
export GCC5_AARCH64_PREFIX=aarch64-linux-gnu-
source edksetup.sh
# Build ArmPkg
build -p ArmPkg/ArmPkg.dsc -a AARCH64 -t GCC5 -b DEBUG

有趣的是,因為手邊有一台 Raspberry Pi 4,想說那可不可以反過來用 Arm 去 build x86 binary,沒想到沒有現成的 crossbuild-essential-i386crossbuild-essential-amd64 可以用 apt 安裝,還是放棄好了。

提示

若不再需要支援 arm64 可以用這個指令移除 apt list source

1
sudo dpkg --remove-architecture arm64