Linux下UEFI模拟器编译和启动
来源:互联网 发布:观察者模式java代码 编辑:程序博客网 时间:2024/05/22 11:56
操作系统
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
- Linux下UEFI模拟器编译和启动
- 完整版linux下android源码下载、编译、模拟器启动运行
- 完整版linux下android源码下载、编译、模拟器启动运行
- Android sdk 编译及linux和windows 模拟器启动总结
- UEFI BIOS和UEFI启动模式
- UEFI启动和BIOS启动
- UEFI启动和BIOS启动
- Android4.0.1 编译sdk 和 启动模拟器
- 完整版linux下android源码下载、编译、模拟器启动运行(附源码目录结构说明)
- Ubuntu下,Android编译和模拟器运行
- Linux内核编译,启动带linux内核的模拟器。
- Android 编译成功,vmware+ubuntu10.4下模拟器成功启动
- UEFI和Legacy及UEFI+Legacy启动的区别
- UEFI和Legacy及UEFI+Legacy启动的区别
- Kali Linux在原生Windows 10的UEFI模式下启动
- UEFI - 启动
- 抽空更新了下自己的杂交PE,支持bios和uefi双启动。
- 亲测!UEFI启动模式下,电脑安装win10和Ubuntu双系统
- ViewPager(页面滑动,加动态点,循环,加标题)
- JNI传递参数
- 把一个项目作为library加入其它项目出现莫名错误
- [概念]Base64编码
- 数据库 Sqlite数据库
- Linux下UEFI模拟器编译和启动
- 瞎玩php——php与web页面交互之表单初识(1)
- KMP算法
- windows2008R2下iis7集成多个tomcat多个站点
- C++ 浮点数的存储结构
- Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果
- 设计一种缓存机制,缓存最近几次查询的结果
- eclipse tomcat两个问题
- Android Studio Mac 下修改快捷键