当前位置: 首页 > article >正文

UEFI——使用标准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.h>

int main(int args , char ** argv)
{
    printf("Hello world2024!\n");
    return 0;
}

编写inf文件, 添加标准C库头文件StdLib/StdLib.dec 添加标准C库

[Defines]
  INF_VERSION = 0x00010006
  BASE_NAME = MyHelloWorldStdLibC
  FILE_GUID = c912f194-7f0e-4803-b907-b757b806ec73
  MODULE_TYPE = UEFI_APPLICATION
  VERSION_STRING = 1.0
  ENTRY_POINT = ShellCEntryLib
  VALID_ARCHITECTURES = X64
  
[Sources] 
  MyHelloWorldStdLibC.c

# 添加标准C库头文件  
[Packages]
  MdePkg/MdePkg.dec
  ShellPkg/ShellPkg.dec 
  StdLib/StdLib.dec

# 添加标准C库
[LibraryClasses]
  LibC 
  LibStdio
  ShellCEntryLib

修改OvmfPkg/OvmfPkgX64.dsc文件,文件末尾添加

##############################################################################
#
#  Include Boilerplate text required for building with the Standard Libraries.
#
##############################################################################
!include StdLib/StdLib.inc
!include AppPkg/Applications/Sockets/Sockets.inc

编译UEFI应用程序,并运行。


http://www.kler.cn/a/301484.html

相关文章:

  • 华为USG5500防火墙配置NAT
  • Linux dpkg命令详解
  • 【Go】-bufio库解读
  • Gin 框架中间件详细介绍
  • 使用 TensorFlow 实现 ZFNet 进行 MNIST 图像分类
  • AI大模型(一):Prompt AI编程
  • springboot项目实现分库
  • 使用ansible的剧本制作salt-master与salt-minion的安装与启动服务过程
  • 人工智能如何改变我们的工作方式
  • Leetcode Hot 100刷题记录 -Day12(轮转数组)
  • Scratch中秋节游戏——玉兔收集月饼
  • 上/下三角矩阵的压缩存储
  • QML与widget
  • 如何增加Google收录量?
  • [数据结构]红黑树之插入操作(RBTree)
  • 衡石分析平台使用手册-部署前准备
  • flink中disableChaining() 的详解
  • Redis面对数据量庞大处理方法
  • Jmeter_循环获取请求接口的字段,并写入文件
  • 如何实现视频数据的PES打包和传输?
  • 【JavaSE】基础学习以及简单的计算器应用程序GUI实现
  • 【Kubernetes】常见面试题汇总(十)
  • ffmpeg编译连接报错 undefined reference to `uncompress‘
  • leetcode练习 单词搜索
  • 【区块链 + 人才服务】基于区块链技术助力人才证书数字化 | FISCO BCOS应用案例
  • wordpress建立数据库连接失败 数据库删除恢复