UEFI TIPS: 使用CLIB会使得 APPLICATION 变大120KB

最近在编写对于体积比较敏感的 UEFI Application,忽然发现生成的文件足有140KB。经过研究发现这是因为使用了 CLIB 导致的。为此特别进行了一下实验。

首先直接编译AppPkg 中的 Hello,得到的文件为 8K 大小

之后,修改代码在 INF 中引入CLIB

[Defines]
  INF_VERSION                    = 0x00010006
  BASE_NAME                      = Hello3
  FILE_GUID                      = a912f198-2023-0314-b908-b757b806ec83
  MODULE_TYPE                    = UEFI_APPLICATION
  VERSION_STRING                 = 0.1
  ENTRY_POINT                    = ShellCEntryLib

#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  Hello3.c

[Packages]
  MdePkg/MdePkg.dec
  ShellPkg/ShellPkg.dec

[LibraryClasses]
  UefiLib
  ShellCEntryLib
  LibC

C 代码只是修改了一下入口为 main函数:

#include  <Uefi.h>
#include  <Library/UefiLib.h>
#include  <Library/ShellCEntryLib.h>

int
main (
  IN int Argc,
  IN char **Argv
  )
{
  Print(L"Hello there fellow Programmer.\n");
  Print(L"Welcome to the world of EDK II.\n");

  return(0);
}

重新编译,可以看到生成的问题就变成133KB 了。

所以,如果对UEFI Application 尺寸比较敏感,请避免使用 CLIB。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注