安装开发包阶段:1.下载uefi 的开发包EDK http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=EDK,并解压至指定目录C:EDK(可以任意设置).2.安裝Visual Studio 2005 or 20083.安裝WDK(可不安装,如果你从其他地方找到库的话,有些uefi程序需要链接到WDK库,像EfiDiskUtility程序的efifmt就需要连接int64.lib).4.
配置开发环境:1.修改环境config.env,如果不修改会有很大不可知的错误,如NMAKE : fatal error U1077: "C:WINDDK3790.1830inwin64x86amd64lib" : return 02修改前:
USE_VC8 = NO
USE_VC8_X64 = NO
修改后:USE_VC8 = YES
USE_VC8_X64 = YES
2.设置环境变量:在command prompt 下key入:set EDK_SOURCE=C:edkset WIN_DDK_PATH=C:WinDDK7600 ===>使用WDK6000的話就設7600(可以不设置,如果不需要连接WDK库文件的话).
开始build,以X64举例:1.开始build,启动VS2008 命令行: VS2008快捷方式如下:%comspec% /k ""C:Program Files (x86)Microsoft Visual Studio 9.0VCvcvarsall.bat"" x862.EDK 可以產生多种环境,我们只需build平台x64: cd C:EDKSamplePlatformX64Build3.nmake(如果是IA32,nmake run就可以启动32位shell模拟器).
build shell和EfiDiskUtility,特别是后者需要关联库比较多:1.修改x64.dsc文件,该文件类似VC中的解决方案.sln文件,能把很大项目结合起来.[Libraries.Platform]
# Added by 2012-7-12 for compiling shell and disk tool
#OtherMaintainedApplicationShellShell.inf
OtherMaintainedApplicationShellShellFull.inf
OtherMaintainedApplicationShellLibraryEfiShellLib.inf
OtherMaintainedApplicationEfiDiskUtilityefilibefilib.inf
OtherMaintainedApplicationEfiDiskUtilitydiskpartdiskpart.inf
OtherMaintainedApplicationEfiDiskUtilityefichkefichk.inf
OtherMaintainedApplicationEfiDiskUtilityefifmtefifmt.inf
#SampleApplicationEfiDiskUtilitydiskpartdiskpart.inf
#SampleApplicationEfiDiskUtilityefilibefilib.inf
一定要在Libraries.Platform section下面,否则有FILE_GUID没有定义等多处错误,一般每个inf文件都会定义一个FILE_GUID,uefi程序通过GUID去定位.
2.复制int64.lib到EfiDiskUtilityefilib.3.修改EfiDiskUtility的多处编译错误.4.nmake5.看结果排错,即使build成功,但是经常会暴错误,暂时没发现影响正常功能.ormX64BuildX64OtherMaintainedApplicationShell -P1 -V
GenFfsFile : error E0000: -V : can"t open input file6.在C:EDKSamplePlatformX64BuildX64目录下会有编译的efi文件.
Tip:仔细看EfiDiskUtility下面几个目录,发觉diskpart下面有inf文件,inf文件包含source依赖,而efilib下面的inf文件什么都不包含只说明type 是makefile,那到底其怎么编译的呢?未编译成功之前我一直被纳闷,其实对makefile机制有所了解的人可以深究下去,以这个库未入手点,应该能找到uefi编译环境的精髓.
单独编译某个module,如,在UDK环境下可以直接运行build -p Nt32PkgNt32Pkg.dsc -a IA32 -m MdeModulePkgApplicationHelloWorldHelloWorld.inf,通用Linux操作面试题Linux C++开发面试题相关资讯 UEFI
- UEFI的两种启动模式 (07月29日)
- 如何在 Win8 上禁用 UEFI 以安装 (05/21/2014 13:18:49)
- Windows 8系统更新会删除GRUB2并设 (03/26/2014 08:58:19)
| - 使用 UEFI 保护操作系统加载前的环 (07/06/2014 10:03:00)
- UEFI+GPT安装Windows8和CentOS双系 (05/11/2014 16:54:39)
- Matthew Garrett修复UEFI Linux笔 (03/25/2013 18:55:39)
|
本文评论 查看全部评论 (0)