操作系统
Linux系统:deepin 2014.3 desktop
需要文件
1.Edk2或者Udk2014
最新版Edk2获取网址:https://www.github.com/tianocore/edk2
备注:也可以下载tinaocore官网上的稳定版,有Udk2010和Udk2014,此时要按照要求配置好整个workspace和根目录的关系。
操作步骤
1.首先为系统安装git:
a) 在shell下运行指令:sudo apt-get install git。就可以为系统安装git
2.使用git的clone工具,获得最新的edk2源码
a) 指令如下:git clone https://github.com/tianocore/edk2
3.创建工作目录:edk2
a) 在/home/kair/目录下创建edk2目录,作为edk2的工作空间(此处kair目录是用户名,也就是用户操作空间)
b) 如果是下载的稳定版本,解压之后,将workspace中的文件和BaseTools(Unix)中的文件统一放到目录edk2下面。
设定好之后的目录如下:
4.配置好环境变量,设定好需要的配置文件,如下图:
a) 执行指令:source edksetup.sh
该指令执行成功后,在/edk2/Conf/目录下,会自动生成target.txt,tools_def.txt等一些重要的配置文件。
b ) target.txt和tools_def.txt这些文件配置了要编译工程是64为还是32位置,使用的C编译器的类型和版本等信息,在这里配置后,文件中的信息就是默认信息。
5.编译UEFI模拟器
a) 编译指令:EmulatorPkg/build.sh -a IA32或者
EmulatorPkg/build.sh -a X64(64位)
b) 默认编译指令:build
c) 默认编译指令对应的是在Conf目录下面,target.txt文件下配置的相关信息,按照其中的配置信息进行的编译。
6.启动UEFI模拟器
a) 启动指令:
EmulatorPkg/build.sh -a IA32 run或者
EmulatorPkg/build.sh -a X64 run(64位)
b) 默认启动指令:build run(对应上面的默认编译指令,前提是配置文件中已经配置 好需要说明的信息)
问题和解决方法
1.版本问题:
a) EmulatorPkg取代了UnixPkg。网上很多资料,包括官方文档的资料,都是对应于UnixPkg被取代之前的内容。这一点需要注意。
b) Gcc的版本可能导致问题出现:
较低版本的Gcc可能回和edk2的新版本,在编译的时候出现问题,如果使用edk2
或者Udk2014稳定版,建议用Gcc4.6及以上的版本。
2.编译和启动的问题:
a) 默认的编译命令为build。
i. 只需要配置好target.txt等配置文件)之后,就可以编译成功
ii. 特别注意,这里要编译成功的前提有两个:第一,需要在BaseTools目录下执行make命令,生成编译UEFI的工具链;第二,修改target.txt文件,将默认的Nt32Pkg修改为EmbeddedPkg。
b) 新版本下正确的便以指令是:
EmulatorPkg/build.sh -a IA32或者
EmulatorPkg/build.sh -a X64(64位)
c) 正确的运行指令,也就是在上面编译指令后面,加上run,即可启动UEFI模拟器。
这里只执行默认的build run指令,不能成功启动模拟器。
d) 上述的问题的详细原因还在探索和学习的过程中。
3.环境中缺少某些第三方库文件
a) 32位编译的时候,报错
b) 64位编译的时候,可以通过
c) 提示缺少gdb,安装后问题会解决
d) 安装后,还有错误,如下:
4.系统中缺少某些东西
a)
b)
c)
d) 根据提示信息,修改代码即可成功
c) 成功解决问题:
d) 成功编译输出hello world