网站建设 淘宝运营,百度百度地图,台州市知名专业做网站,网站htm建设一、C标准库
C标准库是ANSL C标准为C语言定义的标准库。C标准库包含15个头文件#xff1a;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标准库
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语言代码
#include stdio.hint main(int args , char ** argv)
{printf(Hello world2024!\n);return 0;
}
编写inf文件 添加标准C库头文件StdLib/StdLib.dec 添加标准C库
[Defines]INF_VERSION 0x00010006BASE_NAME MyHelloWorldStdLibCFILE_GUID c912f194-7f0e-4803-b907-b757b806ec73MODULE_TYPE UEFI_APPLICATIONVERSION_STRING 1.0ENTRY_POINT ShellCEntryLibVALID_ARCHITECTURES X64[Sources] MyHelloWorldStdLibC.c# 添加标准C库头文件
[Packages]MdePkg/MdePkg.decShellPkg/ShellPkg.dec StdLib/StdLib.dec# 添加标准C库
[LibraryClasses]LibC LibStdioShellCEntryLib修改OvmfPkg/OvmfPkgX64.dsc文件文件末尾添加
##############################################################################
#
# Include Boilerplate text required for building with the Standard Libraries.
#
##############################################################################
!include StdLib/StdLib.inc
!include AppPkg/Applications/Sockets/Sockets.inc编译UEFI应用程序并运行。