UEFI 最小应用模板:.c / .inf / .dec / .dsc 完整示例 UEFI 应用开发最小完整示例1. 三文件职责文件一句话职责.inf你写的。告诉编译器入口叫啥有哪些源文件依赖哪些库。.dec包作者写的。告诉编译器我的头文件在哪我能提供哪些库。.dsc项目总管写的。告诉编译器库的实体在哪这次编译哪些模块。2. 完整代码2.1MyApp.c—— 源代码#includeUefi.h#includeLibrary/UefiLib.hEFI_STATUSUefiMain(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE*SystemTable){Print(LHello UEFI!\n);returnEFI_SUCCESS;}2.2MyApp.inf—— 应用说明书[Defines] INF_VERSION 1.25 BASE_NAME MyApp FILE_GUID 12345678-1234-1234-1234-123456789ABC MODULE_TYPE UEFI_APPLICATION ENTRY_POINT UefiMain # 1. 入口叫啥 [Sources] MyApp.c # 2. 有哪些源文件 [Packages] MdePkg/MdePkg.dec # 3. 依赖的包为了用它提供的头文件 [LibraryClasses] UefiApplicationEntryPoint # 4. 依赖的库类提供UefiMain入口包装代码让固件调用你的函数 UefiLib # 因为用了 Print() 函数这个库提供 Print 的实现2.3MdePkg.dec—— 包的公开声明这是 EDK2 自带的包不用自己写但必须看懂。它长这样[Defines] PACKAGE_NAME MdePkg [Includes] Include # 头文件路径MdePkg/Include/ [LibraryClasses] UefiLib|Include/Library/UefiLib.h # 声明有这个库并指定头文件 UefiApplicationEntryPoint|Include/Library/UefiApplicationEntryPoint.h2.4 项目.dsc文件你需要添加的内容# .dsc 文件的作用 # 1. 给“库类名”指派具体的“库实现文件.inf” # 2. 决定这次要编译哪些模块 [LibraryClasses] # 当某个模块在它的 .inf 里声明需要 UefiLib 时就用下面这个 .inf 作为实现 UefiLib|MdePkg/Library/UefiLib/UefiLib.inf # 同上这是 UefiApplicationEntryPoint 这个库类对应的实体 UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf [Components] # 告诉构建系统这次编译把 MyApp 这个模块包含进去 MyApp/MyApp.inf3. 它们怎么协作一次完整的编译过程编译器读MyApp.inf知道入口是UefiMain需要UefiLib这个库。编译器去.dsc的[LibraryClasses]里找到UefiLib对应的实现库文件UefiLib.inf。编译MyApp.c时遇到#include Library/UefiLib.h编译器根据MdePkg.dec的[Includes]知道去MdePkg/Include/Library/下找这个头文件。三个文件各回答一个问题流程清清楚楚。4. 速查表问题答案所在关键字段入口函数叫啥.infENTRY_POINT#include的头文件在哪.dec[Includes]库函数的实体是哪个 .inf.dsc[LibraryClasses]我的应用参不参与编译.dsc[Components]

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/1 19:32:24
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/30 21:32:07
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/10/2 15:29:32
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/3 7:41:27
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 19:32:35
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/30 21:32:11

日新闻

周新闻

月新闻