Ubuntu 18 EDK2 环境编译

视频:在全新的Ubuntu上从零搭建UEFI的EDK2开发环境

开始git clone https://github.com/tianocore/edk2.git
在这里插入图片描述

开始编译BaseTools前先更新一下子模块git submodule update --init然后make -C BaseTools/

问题1BrotliCompress.c:20:10: fatal error: ./brotli/c/common/constants.h: 没有那个文件或目录 #include "./brotli/c/common/constants.h" ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated.

在这里插入图片描述
解决方法:把确实的文件下载好,放到相应的目录下

来源:edk2编译报错 BrotliCompress.c:20:10: fatal error: ./brotli/c/common/constants.h: No such file or directo

问题2gcc 找不到 -luuid
在这里插入图片描述
解决方法:

sudo apt-get install uuid-dev

来源:解决/usr/bin/ld: cannot find -luuid编译错误

问题3FAIL: test_FMMT_FMMT (CheckPythonSyntax.Tests)
在这里插入图片描述
解决方法:原因是 python 版本不对 ,应该使用python3,但使用设备里 python 指向了python2,重定向软连接到 python3,然后工程根目录执行 source ./edksetup.sh 将正确的python版本设置到工作环境变量

在这里插入图片描述

来源:edkII 环境配置

到这里,Basetools 编译成功了。。。。。。。。。。
在这里插入图片描述

问题4:EDK2构建发生错误 File/directory not found in workspace
解决方法:可能是之前的子模块没有弄好,重新更新一下

问题5:build 不成功
在这里插入图片描述

解决方法:将编译链可以改为GCC
在这里插入图片描述

问题6/bin/sh: 1: nasm: not found
在这里插入图片描述
解决方法sudo apt install nasm
在这里插入图片描述

问题7/home/feng/edk2/Build/EmulatorIA32/DEBUG_GCC/IA32/MdePkg/Library/BaseLib/BaseLib/OUTPUT/Ia32/LongJump.iii:42: error: parser: instruction expected /home/feng/edk2/Build/EmulatorIA32/DEBUG_GCC/IA32/MdePkg/Library/BaseLib/BaseLib/OUTPUT/Ia32/LongJump.iii:47: error: parser: instruction expected

在这里插入图片描述
解决方法:nasm 版本太低,下载最新版本
在这里插入图片描述

等到 configure 后,进行 make && sudo make install

问题8/usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: 没有那个文件或目录

在这里插入图片描述

解决方法:这个头文件在 gcc-multlib 里,安装一下:sudo apt install gcc-multilib

问题9:/home/feng/edk2/EmulatorPkg/Unix/Host/X11GraphicsWindow.c:15:10: fatal error: X11/Xlib.h: 没有那个文件或目录

解决方法:这个头文件在 libx11-dev 里,安装一下:sudo apt install libx11-dev

问题10:/home/feng/edk2/EmulatorPkg/Unix/Host/X11GraphicsWindow.c:18:10: fatal error: X11/extensions/XShm.h: 没有那个文件或目录

解决方法:这个头文件在 libx11-dev 里,安装一下:sudo apt install libxext-dev

问题11:编译不兼容
在这里插入图片描述

解决方法:架构IA32不匹配,要改一下,改为 X64vim Conf/target.txt
在这里插入图片描述

成功了!!!
在这里插入图片描述
在这里插入图片描述

编译 Ovmf

build -a X64 -t GCC5 -p OvmfPkg/OvmfPkgX64.dsc  (GCC5及以上都写为GCC5)

问题/bin/sh: 1: iasl: not found
解决方法sudo apt install iasl
在这里插入图片描述

然后切换到编译好的目录:cd Build/OvmfX64/DEBUG_GCC5/FV,运行qemu-system-x86_64 -bios OVMF.fd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/918221.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全SQL初步注入2

六.报错注入 mysql函数 updatexml(1,xpath语法,0) xpath语法常用concat拼接 例如: concat(07e,(查询语句),07e) select table_name from information_schema.tables limit 0,1 七.宽字节注入(如果后台数据库的编码为GBK) url编码:为了防止提交的数据和url中的一些有特殊意…

Git 搭建远程仓库、在 IDEA 工具中的配置和使用

Git的概念、安装、操作与分支管理和图形化界面TortoiseGit(小乌龟 )的安装与使用-CSDN博客 目录 一、远程仓库 1)在github上创建仓库 2)在gitee上创建项目 3)如何将远程的项目clone 到本地 4)公司自己…

自然语言处理技术之细粒度实体识别

细粒度实体识别(Fine-Grained Named Entity Recognition, FG-NER) 1. 概述 细粒度实体识别是自然语言处理(NLP)领域中的一个重要研究方向,其目标是从文本中识别出更加具体和详细的实体类型。相比于传统的实体识别(NER),细粒度实体识别不仅关注常见的实体类别(如 人名…

k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储

文章目录 [toc]docker registry 部署生成 htpasswd 文件生成 secret 文件 生成 registry 配置文件创建 service创建 statefulset创建 ingress验证 docker registry docker registry 监控docker registry ui docker registry dockerfile docker registry 配置文件 S3 storage dr…

为什么要使用Ansible实现Linux管理自动化?

自动化和Linux系统管理 多年来,大多数系统管理和基础架构管理都依赖于通过图形或命令行用户界面执行的手动任务。系统管理员通常使用清单、其他文档或记忆的例程来执行标准任务。 这种方法容易出错。系统管理员很容易跳过某个步骤或在某个步骤上犯错误。验证这些步…

一文了解Android的核心系统服务

在 Android 系统中,核心系统服务(Core System Services)是应用和系统功能正常运行的基石。它们负责提供系统级的资源和操作支持,包含了从启动设备、管理进程到提供应用基础组件的方方面面。以下是 Android 中一些重要的核心系统服…

MATLAB向量元素的引用

我们定义一个向量后,如果想引用的话,可以通过索引 i n d ind ind来实现。 注意:MATLAB中向量的开始索引是1,与许多编程语言不同。 例如: 如果想引用多个的话,可以用索引 i n d ind ind来提取多个位置 例如…

让空间计算触手可及,VR手套何以点石成金?

引言 如何让一位母亲与她去世的小女儿“重逢”?韩国MBC电视台《I Met You》节目实现了一个“不可能”心愿。 在空旷的绿幕中,母亲Jang Ji-sung透过VR头显,看到了三年前因白血病去世的女儿Nayeon。当她伸出双手,居然能摸到女儿的…

paramiko 库实现的暴力破解 SSH 密码

import paramiko import optparse import threading import time from threading import Thread, BoundedSemaphore# 用paramiko暴力破解SSH密码 # 最大并发连接尝试的数量,可根据实际情况调整,适当减小可降低对目标服务器的压力以及减少多线程同步问题出…

用 Python 从零开始创建神经网络(五):损失函数(Loss Functions)计算网络误差

用损失函数(Loss Functions)计算网络误差 引言1. 分类交叉熵损失(Categorical Cross-Entropy Loss)2. 分类交叉熵损失类(The Categorical Cross-Entropy Loss Class)展示到目前为止的所有代码3. 准确率计算…

RabbitMQ的工作队列在Spring Boot中实现(详解常⽤的⼯作模式)

上文着重介绍RabbitMQ 七种工作模式介绍RabbitMQ 七种工作模式介绍_rabbitmq 工作模式-CSDN博客 本篇讲解如何在Spring环境下进⾏RabbitMQ的开发.(只演⽰部分常⽤的⼯作模式) 目录 引⼊依赖 一.工作队列模式 二.Publish/Subscribe(发布订阅模式) …

QWen2.5学习

配置环境 pip install transformers 记得更新一下:typing_extensions pip install --upgrade typing_extensions 安装modelscope modelscope/modelscope: ModelScope: bring the notion of Model-as-a-Service to life. 下载这个仓库的代码上传到服务器解压 推…

如何使用正则表达式验证域名

下面是一篇关于如何使用正则表达式验证域名的教程。 如何使用正则表达式验证域名 简介 域名是互联网上网站的地址,每个域名由多个标签(label)组成,标签之间用点 . 分隔。域名规则有很多细节,但基本要求是&#xff1a…

【MySQL】MySQL数据库入门:构建你的数据基石

🍑个人主页:Jupiter. 🚀 所属专栏:MySQL初阶探索:构建数据库基础 欢迎大家点赞收藏评论😊 目录 🦅数据库基础🐀什么是数据库🐏主流数据库🦆MySQL数据库的基本…

微信小程序之路由跳转传数据及接收

跳转并传id或者对象 1.home/index.wxml <!--点击goto方法 将spu_id传过去--> <view class"item" bind:tap"goto" data-id"{{item.spu_id}}"> 结果: 2.home/index.js goto(event){// 路由跳转页面,并把id传传过去//获取商品idlet i…

杰控通过 OPCproxy 获取数据发送到服务器

把数据从 杰控 取出来发到服务器 前提你在杰控中已经有变量了&#xff08;wincc 也适用&#xff09; 打开你的opcproxy 软件包 opcvarFile 添加变量 写文件就写到 了 opcproxy.ini中 这个文件里就是会读取到的数据 然后 opcproxy.exe发送到桌面快捷方式再考回来 &#…

【Mysql】Mysql函数(上)

1、概述 在Mysql中&#xff0c;为了提高代码重用性和隐藏实现细节&#xff0c;Mysql提供了很多函数。函数可以理解为封装好的模块代码。 2、分类 在Mysql中&#xff0c;函数非常多&#xff0c;主要可以分为以下几类&#xff1a; &#xff08;1&#xff09;聚合函数 &#xf…

MIT6.5840 Lab 1: MapReduce(6.824)

结果 介绍 在本实验中&#xff0c;您将构建一个MapReduce系统。您将实现一个调用应用程序Map和Reduce函数并处理文件读写的工作进程&#xff0c;以及一个将任务分发给工作进程并处理失败的工作进程的协调进程。您将构建类似于MapReduce论文的东西。&#xff08;注意&#xff1a…

关于mysql中的锁

mysql中包含的锁分为&#xff1a; 一、全局锁 二、表锁 三、行锁 一、全局锁 全局锁的力度是最大的&#xff0c;全局锁对整个数据库实例加锁&#xff0c;加锁后整个实例就处于只读状态&#xff0c;后续的DML的写语句&#xff0c;DDL语句&#xff0c;已经更新操作的事务提交语句…

51单片机应用开发---LCD1602显示应用

实现目标 1、了解LCD1602液晶屏&#xff1b; 2、掌握驱动程序的编写&#xff1b; 3. 具体目标&#xff1a;在屏幕上显示字符。 一、LCD1206概述 1.1 定义 LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置…