概要
模拟器平台介绍 :
一个仿真平台并不是一个实际的硬件平台 , 但它旨在证明 EDKII 核心模块的稳定性和独立于硬件可以开发模块。仿真平台和实际平台之间的差异是其加载器和仿真的硬件设备。
Emulator虚拟环境,用来取代Nt32Pkg和UnixPkg,可以跨平台编译运行的一个虚拟器。
源码
git clone https://github.com/tianocore/edk2.git
cd edk2
git submodule update --init
cd ..
环境
1.更新软件源,sudo apt-get update
2.安装gcc4.8
sudo apt-get install gcc-4.8 g++-4.8
如果已经安装gcc,可以使用下面命令切换
添加
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50
切换
sudo update-alternatives --config gcc
3.安装nasm
sudo apt-get install nasm
4.安装build
sudo apt-get install build-essential uuid-dev
sudo apt-get install iasl
5.安装python
sudo apt-get install python
sudo apt-get install python-pip
sudo apt-get install python3-distutils
6.在edk根目录执行
source edksetup.sh
7.在 BaseTools目录下编译工具
make
建立完成后,试试看能否编译。
source edksetup.sh
build -p MdeModulePkg/MdeModulePkg.dsc -t GCC48
8.在Emulator虚拟环境edk2/EmulatorPkg/EmulatorPkg.dsc
修改为
##
# PEI Phase modules
##
MdeModulePkg/Core/Pei/PeiMain.inf{
<BuildOptions>
*_*_*_CC_FLAGS=-O0
}
9.编译
Emulator虚拟环境
EmulatorPkg/build.sh
或者:
build -p $WORKSPACE/EmulatorPkg/EmulatorPkg.dsc -a X64 -b DEBUG -t GCC5 -D BUILD_64 -D UNIX_SEC_BUILD -n 3
10.运行
Emulator虚拟环境
EmulatorPkg/build.sh run
/usr/bin/cgdb B U I L D R O O T A R C H / H o s t − q − c d = BUILD_ROOT_ARCH/Host -q -cd= BUILDROOTARCH/Host−q−cd=BUILD_ROOT_ARCH -x $WORKSPACE/EmulatorPkg/Unix/GdbRun.sh
问题
1、安装不了python3-distutils,提示无法定位
sudo vim /etc/apt/sources.list
添加源:
deb http://cn.archive.ubuntu.com/ubuntu bionic main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-updates main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-security main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-proposed main multiverse restricted universe
再执行如下指令:
sudo apt-get update
sudo apt-get install python3-distutils
2、Trim.py: error: no such option: --asm-file
安装完如下3条命令问题就没有了,也不知道具体哪条解决的;
pip install brotli
sudo apt install build-essential uuid-dev
sudo apt install acpica-tools
3、 在编译AppPkg和Demo时,出现如下问题:
/usr/bin/ld: 并不支持从格式 pe-i386 (/home/zhubo/loongson/02-code/edk2/Build/AppPkg/DEBUG_GCC5/IA32/StdLib/LibC/LibC/OUTPUT/LibC.lib(ftol2.obj)) 到格式 elf32-i386 (/home/zhubo/loongson/02-code/edk2/Build/AppPkg/DEBUG_GCC5/IA32/AppPkg/Applications/Sockets/SetHostName/SetHostName/DEBUG/SetHostName.dll) 的重寻址链结
是由于在ubuntu64上编译32位应用导致的,添加-a X64
后正常了;
build -p AppPkg/AppPkg.dsc -t GCC5 -a X64
4、警告变error
可以在 Flags 加 -Wno-error
试试
5、编译报缺少东西,如brotli/c/enc/encoder_dict.o: 没有那个文件或目录
git submodule update --init