前言

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

环境搭建

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

2.下载最新的NASM,用于编译汇编相关的代码:

sudo apt install nasm

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

sudo apt install iasl

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

5.安装Python

sudo apt install python

6.安装uuid库,编译basetools时需要用到

sudo apt install uuid-dev

编译

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

make clean

make -C ./

注意:由于最新的ubuntu 内置GCC版本较高(GCC7或GCC9),编译会fail,需要再安装低版本的GCC5,点击下载,下载后使用如下命令安装:

sudo dpkg -i gcc-5-source_5.5.0-12ubuntu1_all.deb

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

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

若提示找不到包是因为Ubuntu版本较高,只能手动安装了,下载地址:https://mirrors.huaweicloud.com/ubuntu/pool/universe/g/,选择名字结尾带_all的包,这才是完整的,其它的会提示缺少依赖。

安装完使用 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即可

uefi linux开发环境,UEFI开发学习1 - Ubuntu下搭建UDK2018开发环境相关推荐

  1. ubuntu下搭建android开发环境(转载)

    在ubuntu下搭建android开发环境,准备学习一下android开发. 1.安装JDK        首先到oracle的官网上下载linux版本的JDK(网址为:http://www.orac ...

  2. ubuntu下搭建android开发环境(四)核心篇安装AndroidStudio、sdk、jdk

    [置顶] ubuntu下搭建android开发环境(四)核心篇安装AndroidStudio.sdk.jdk(by 星空武哥) <div class="article_manage c ...

  3. Ubuntu下搭建MPI并行计算环境

    Ubuntu下搭建MPI并行计算环境 [日期:2012-10-10] 来源:Linux社区 作者:hs794502825 [字体:大 中 小] 在这里面可以选择一个合适的openmpi安装包,此处我选 ...

  4. ubuntu下搭建erlang编程环境

    ubuntu下搭建erlang编程环境 吐槽:erlang作为一门小众语言,编程环境配置的我发疯啊,官方标配是emacs,但是我作为中毒已深的vimer实在不想换编辑器了,在尝试的途中我还试过了用ec ...

  5. linux搭建python运行环境_centos运行.py centos5.5下搭建python开发运行环境 - Linux - 服务器之家...

    centos运行.py centos5.5下搭建python开发运行环境 发布时间:2017-04-28 来源:服务器之家 我们知道ython可以在windows.linux.android运行了,但 ...

  6. felayman——Ubuntu下搭建PHP开发环境

    可以选择一键安装所有包,也可以一个个的安装,这里我选择一键安装. 步骤如下: 1.sudo apt-get install apache2 mysql-server mysql-client php5 ...

  7. ubuntu下搭建的lamp环境新建站点

    这几天刚装了一个ubuntu 16.04桌面版,总之来来回回几遍才基本把环境搭建好,本来用apt-get搭建,结果不知道什么原因16.04版不支持装php5 ,提示源放弃了php5版本,不得不使用ph ...

  8. ti linux 开发环境,Ubuntu下搭建MSP430开发环境(MSPGCC)

    上回讲到已经成功编译了源代码,生成了可执行文件,接下来就是要连接仿真器,下载可执行文件了.mspgcc中连接仿真其用的是mspdebug(功能上类似与openocd),连接成功之后它也能够充当gdbs ...

  9. PHP和MySQL Web开发从新手到高手,第1天-搭建PHP开发环境

    准备式作 1. 搭建开发环境 具体步骤,请参考: Windows下搭建PHP开发环境 2. 参考书籍 3. 开发环境 如果上面两步你已经搞定了, 现在可以安装PHP开发环境了.     我用的是: [ ...

  10. 在Win32下搭建opengl绘制环境

    在官方标准教程中使用glfw3来创建opengl的窗体,处理输入相关消息.本文介绍下如何在win32下搭建opengl绘制环境. 以下是在win32下搭建opengl绘制环境的流程 1.入口函数:in ...

最新文章

  1. 用户报告性能缓慢的解决流程
  2. 精通有状态vs无状态(Stateful vs Stateless)一
  3. mfc 内嵌 本地html,MFC程序中内嵌网页,附示例工程
  4. 前端学习(2511):组件注册
  5. 计算机辅助功能包括什么,CAD软件是什么?有什么功能?
  6. Mysql学习总结(53)——使用MySql开发的Java开发者规范
  7. Java 阻塞队列实现原理分析
  8. php无缝滚动文字,使用JS如何实现文字无缝滚动
  9. pytorch 使用netron可视化
  10. signature=29c90d1a8d382ff261d00a931708390a,发烧音响功放(顶级Hi-End音响发烧器材介绍)...
  11. 直播提醒|今晚八点半,最硬核情感分析技术讲解来袭!内附SKEP详解+大作业指导!...
  12. 13.SpringBoot学习(十三)——JDBC之 Spring Boot Jpa多数据源
  13. java sasl例子_Java Subject.doAs方法代碼示例
  14. docker出现 Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use的解决方法
  15. 剑侠世界职业优缺点简介
  16. Benchmark Analysis 7:SPEC2006.482sphinx
  17. JETSON TX2烧写系统
  18. [翻译]-马丁·福勒-page对象
  19. 使用imagine/imagine实现制作一个图片
  20. 【DTCC 2016】专家访谈:盖国强谈 DT 时代商业行为变化

热门文章

  1. 熊猫烧香病毒分析报告
  2. 微信群发机器人源代码
  3. 微信小程序项目源代码SSM校园生活小助手+后台
  4. 答对10个算我输,示波器基础100问
  5. oracle练习之查询1(where等)
  6. 大一c语言练习及答案,大一c语言习题练习及答案.doc
  7. 佳能打印机g3800如何安装到计算机,【佳能 G3800 喷墨无线一体打印机使用体验】驱动|安装|连接|连接_摘要频道_什么值得买...
  8. JS实现返回顶部功能
  9. c语言数据结构和数据类型_C语言中的数据类型
  10. colab配置运行python项目