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]

相关新闻

最新新闻

淘宝客app开发中关于用户隐私数据加密存储与合规传输的架构思考

淘宝客app开发中关于用户隐私数据加密存储与合规传输的架构思考

淘宝客app开发中关于用户隐私数据加密存储与合规传输的架构思考 大家好,我是省赚客APP研发者微赚淘客! 在返利淘客领域,用户隐私数据安全是业务的生命线。我们处理着用户的淘宝/京东账号信息、收货地址、手机号等敏感数据,任何安全…

2026/7/24 19:13:11
模型蒸馏实战:大模型教小模型不只是 logit 对齐

模型蒸馏实战:大模型教小模型不只是 logit 对齐

模型蒸馏实战:大模型教小模型不只是 logit 对齐 一、个性化深度引言 公司有台8卡A100服务器,部署了GPT-4级别的大模型做内部代码审查。准确率确实高——但每个请求平均耗时2.3秒,高峰期排队超过30秒。开发同事反馈说"审得挺好&#xff0…

2026/7/24 19:13:11
为什么物联网设备需要身份认证:从僵尸网络说起

为什么物联网设备需要身份认证:从僵尸网络说起

2016年,一个名叫Mirai的僵尸网络攻陷了全球几十万台摄像头和路由器,随后对美国东海岸的DNS服务商发起攻击,导致大批主流网站瘫痪。事后复盘,这些设备沦陷的原因出奇一致:使用出厂默认密码,或者干脆没有有效…

2026/7/24 19:13:11
Java单元测试POM配置实战:JUnit、Mockito与Surefire插件深度解析

Java单元测试POM配置实战:JUnit、Mockito与Surefire插件深度解析

1. 项目概述:为什么“随手记”的POM配置值得深究?在Java后端开发里,单元测试是保证代码质量的基石,而JUnit则是这块基石的“标准件”。几乎每个Java开发者都知道要在pom.xml里加上JUnit依赖,然后写几个Test方法。但就是…

2026/7/24 19:13:11
组件库国际化体系复盘:RTL 布局与多语言文案管理

组件库国际化体系复盘:RTL 布局与多语言文案管理

组件库国际化体系复盘:RTL 布局与多语言文案管理 一、国际化不是翻译:从"把中文改成英文"到体系化多语言支持的认知升级 组件库做国际化,最常见的一个认知误区是把它等同于"翻译"——把组件里的中文文案替换成英文&…

2026/7/24 19:13:11
Istio 流量路由基础:VirtualService 与 DestinationRule 实战

Istio 流量路由基础:VirtualService 与 DestinationRule 实战

系列导读 你现在看到的是《Istio 服务网格流量治理实战:从入门到精通》的第 3/10 篇,当前这篇会重点解决:掌握 Istio 路由规则的核心编程模型,为后续高级流量策略奠定基础。 上一篇回顾:第 2 篇《Istio 环境搭建与 Sidecar 注入实战:从安装到验证》主要聚焦 跳过官方文…

2026/7/24 19:08:11

月新闻