Ubuntu下搭建UDK2018开发环境

bin 3月前 148

前言

截至目前,UDK最新的版本是2018,我就以UDK2018为例,一步一步来搭建UDK2018的编译环境。

UDK2018可以从github的网站上下载,链接:https://github.com/tianocore/edk2/releases/tag/vUDK2018

本文参考:how-to-build-linux-like-system

UDK相对于EDK2而言,是一个比较稳定的版本,可能一年只更新一次,而EDK2可能几天就会有代码更新。所以一般用来BIOS用的都会选择UDK,如龙芯的BIOS便是UDK2018。UDK的编译环境支持Windows和Linux,这里记录下载ubuntu下搭建环境的步骤。

环境搭建

1.下载UDK2018:vUDK2018.zip,下载完解压出来,这里假设解压的目录为UDK2018.

2.下载最新的NASM,用于编译汇编相关的代码:https://www.nasm.us/pub/nasm/releasebuilds/,网站上提供的是只有RPM版本,ubuntu是不能直接安装的,可以用工具将RPM转换为可识别的deb包。这个用来转换的工具叫alien,可以在控制台中输入以下命令安装:

sudo apt-get install alien

安装完使用如下命令进行转换:

sudo alien xxxx.rpm

转换成功可在RPM包的同目录下可到deb包,双击安装即可。

3.安装用于编译asl code的工具:

sudo apt-get install iasl

4.安装OpenSSL* Crypto 库:https://github.com/openssl/openssl/archive/OpenSSL_1_1_0g.zip,下载解压至目录UDK2018\CryptoPkg\Library\OpensslLib,并命名为openssl

编译

1.编译BaseTools. 打开控制台进入UDK2018\BaseTools目录,依次执行:

make clean
make -C ./

2.返回UDK2018目录,配置编译参数:

cd ..
source edksetup.sh BaseTools

3.测试编译64位 MdeModulePkg 模块

build -a X64 -t GCC5 -p MdeModulePkg/MdeModulePkg.dsc

4.测试编译32位 MdeModulePkg 模块

build -a IA32 -t GCC5 -p MdeModulePkg/MdeModulePkg.dsc

此时会报错,如下:

  /home/nod/Documents/UDK2018/UDK2018/edk2-vUDK2018/Build/MdeModule/DEBUG_GCC5/IA32/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe/DEBUG/IncompatiblePciDeviceSupport.dll unsupported ELF EM_386 relocation 0xa.
GenFw: ERROR 3000: Invalid
  /home/nod/Documents/UDK2018/UDK2018/edk2-vUDK2018/Build/MdeModule/DEBUG_GCC5/IA32/MdeModulePkg/Bus/Pci/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupportDxe/DEBUG/IncompatiblePciDeviceSupport.dll unsupported ELF EM_386 relocation 0x9.
GenFw: ERROR 3000: Invalid

出现这个错误的原因是GCC版本较高的原因,安装一个4.8的就可以编译通过了,可用如下命令安装:

sudo apt-get install gcc-4.8

安装完使用 gcc -v 查看当前GCC版本还是原来的,怎么切换到4.8呢?看这篇文章: Ubuntu下多个GCC版本切换,做完就可以成功编译32位的了.

常用编译参数

上面编译时候带的参数代表什么意思呢?

-a  即architecture,指定编译的架构,可以是X64, IA32, MIPS64EL等    

-p  即package,指定要编译的模块,如MdeModulePkg/MdeModulePkg.dsc, AppPkg/AppPkg.dsc 

-t   即Toolchain, 指定编译工具,一般Windows的编译工具是VS, 如VS2013, Linux下则为GCC,如GCC5,具体所支持的工具可在Conf/tools_def.txt查看到   

-b  即build, 指定编译的版本, 可以是RELEASE或DEBUG

也可以通过修改Conf/target.txt文件配置默认的参数,这样编译的时候就不用每次都打参数了,直接输入build即可

《Ubuntu下搭建UDK2018开发环境》


最新回复 (0)
返回