前面介绍过一个最小的 UEFI Application编译器【参考1】,美中不足的是它还要依赖于 EDK2 的环境。这次介绍如何从 EDK2 中抽取所需的最小文件,从而实现一个最简单的编译环境。换句话说,之前介绍的是一个最小的用于生成 UEFI Application的编译器,这次介绍的是编译器和编译所需的环境。
实现的方法很简单:研究上一次的编译命令
x86_64-win32-tcc -I MdePkg/Include hello.c -Wl,-subsystem=efiapp -nostdlib -o labz1.efi -DMDE_CPU_EBC
可以看到,指定了MdePkg/Include作为Include 路径,因此,只要我们将这个路径下依赖的文件提取出来即可。
最终实验发现提取如下的文件和目录就够了:
运行命令,编译之(需要注意使用 cmd 窗口):
生成文件labz1.efi, 模拟器测试工作正常:
整个环境只有200KB 左右。有兴趣的朋友可以自行研究。
同样的我们可以直接在 Visual C++ X64窗口中使用下面的命令编译:
cl -I MdePkg/Include hello.c
link.exe /ENTRY:_start /SUBSYSTEM:EFI_APPLICATION /LIBPATH:MdePkg/Include /NODEFAULTLIB /nologo /OUT:YourApp.efi hello.obj
同样可以正常运行:
参考:
1. https://www.lab-z.com/stu279tcc/ 介绍一个最小的UEFI Application 编译器