分享

搭建UEFI开发环境/编译uefi shell/编译disk tool

 guitarhua 2012-08-05

搭建UEFI开发环境/编译uefi shell/编译disk tool

[日期:2012-07-24] 来源:Linux社区  作者:lshl124
安装开发包阶段:
1.下载uefi 的开发包EDK http:///apps/mediawiki/tianocore/index.php?title=EDK
-

,并解压至指定目录C:\EDK(可以任意设置).
2.安裝Visual Studio 2005 or 2008
3.安裝WDK(可不安装,如果你从其他地方找到库的话,有些uefi程序需要链接到WDK库,像EfiDiskUtility程序的efifmt就需要连接int64.lib).
4.

配置开发环境:
1.修改环境config.env,如果不修改会有很大不可知的错误,如NMAKE : fatal error U1077: 'C:\WINDDK\3790.1830\bin\win64\x86\amd64\lib' : return 02
修改前:
USE_VC8                        = NO
USE_VC8_X64                    = NO

修改后:
USE_VC8                        = YES
USE_VC8_X64                    = YES

2.设置环境变量:
command prompt key入:
set EDK_SOURCE=C:\edk
set WIN_DDK_PATH=C:\WinDDK\7600  ===>使用WDK6000的話就設7600(可以不设置,如果不需要连接WDK库文件的话).


开始build,以X64举例:
1.开始build,启动VS2008 命令行:
     VS2008快捷方式如下:%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86
2.EDK 可以產生多种环境,我们只需build平台x64: cd C:\EDK\Sample\Platform\X64\Build
3.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
#Other\Maintained\Application\Shell\Shell.inf
Other\Maintained\Application\Shell\ShellFull.inf
Other\Maintained\Application\Shell\Library\EfiShellLib.inf
Other\Maintained\Application\EfiDiskUtility\efilib\efilib.inf
Other\Maintained\Application\EfiDiskUtility\diskpart\diskpart.inf
Other\Maintained\Application\EfiDiskUtility\efichk\efichk.inf
Other\Maintained\Application\EfiDiskUtility\efifmt\efifmt.inf
#Sample\Application\EfiDiskUtility\diskpart\diskpart.inf
#Sample\Application\EfiDiskUtility\efilib\efilib.inf

一定要在Libraries.Platform section下面,否则有FILE_GUID没有定义等多处错误,一般每个inf文件都会定义一个FILE_GUID,uefi程序通过GUID去定位.

2.复制int64.lib到EfiDiskUtility\efilib\.
3.修改EfiDiskUtility的多处编译错误.
4.nmake
5.看结果排错,即使build成功,但是经常会暴错误,暂时没发现影响正常功能.
orm\X64\Build\X64\Other\Maintained\Application\Shell -P1  -V
GenFfsFile : error E0000: -V : can't open input file
6.在C:\EDK\Sample\Platform\X64\Build\X64目录下会有编译的efi文件.

Tip:仔细看EfiDiskUtility 下面几个目录,发觉diskpart下面有inf文件,inf文件包含source依赖,而efilib下面的inf文件什么都不包含只说明type 是makefile,那到底其怎么编译的呢?未编译成功之前我一直被纳闷,其实对makefile机制有所了解的人可以深究下去,以这个库未入手点,应该 能找到uefi编译环境的精髓.

单独编译某个module,如,在UDK环境下可以直接运行build -p Nt32Pkg\Nt32Pkg.dsc -a IA32 -m MdeModulePkg\Application\HelloWorld\HelloWorld.inf,

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多