UEFI——使用标准C库

打印 上一主题 下一主题

主题 1015|帖子 1015|积分 3045

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、C标准库
C标准库是ANSL C标准为C语言界说的标准库。C标准库包含15个头文件:assert.h ctype.h error.h float.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h。标准库函数与C语言的紧密结合给我们开发步伐带来了极大的便利。使用C标准库开发的应用步伐有很强的可移植性,标准库为上层应用步伐屏蔽了底层平台的差异,使得这些步伐可以在任意平台上通过编译。但同时它也给我们很大的束缚,尤其是当我们将旧代码移植到UEFI平台的时间,不得不举行权衡。
当我们决定在工程中使用标准库函数的时间,有两种方法。如果我们只是使用有限的几个简单标准库函数,则可以使用宏或inline函数实现这些函数。如果简单的封装不能实现这些函数,就不得不使用EDK2中的StdLib。StdLib为UEFI开发者提供了C标准库。
二、使用标准C库
编写一个简单的C语言代码:
  1. #include <stdio.h>
  2. int main(int args , char ** argv)
  3. {
  4.     printf("Hello world2024!\n");
  5.     return 0;
  6. }
复制代码
编写inf文件, 添加标准C库头文件StdLib/StdLib.dec 添加标准C库
  1. [Defines]
  2.   INF_VERSION = 0x00010006
  3.   BASE_NAME = MyHelloWorldStdLibC
  4.   FILE_GUID = c912f194-7f0e-4803-b907-b757b806ec73
  5.   MODULE_TYPE = UEFI_APPLICATION
  6.   VERSION_STRING = 1.0
  7.   ENTRY_POINT = ShellCEntryLib
  8.   VALID_ARCHITECTURES = X64
  9.   
  10. [Sources]
  11.   MyHelloWorldStdLibC.c
  12. # 添加标准C库头文件  
  13. [Packages]
  14.   MdePkg/MdePkg.dec
  15.   ShellPkg/ShellPkg.dec
  16.   StdLib/StdLib.dec
  17. # 添加标准C库
  18. [LibraryClasses]
  19.   LibC
  20.   LibStdio
  21.   ShellCEntryLib
复制代码
修改OvmfPkg/OvmfPkgX64.dsc文件,文件末尾添加
  1. ##############################################################################
  2. #
  3. #  Include Boilerplate text required for building with the Standard Libraries.
  4. #
  5. ##############################################################################
  6. !include StdLib/StdLib.inc
  7. !include AppPkg/Applications/Sockets/Sockets.inc
复制代码
编译UEFI应用步伐,并运行。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表