当前位置: 首页 > news >正文

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

相关文章:

Ubuntu 18 EDK2 环境编译

视频:在全新的Ubuntu上从零搭建UEFI的EDK2开发环境 开始:git clone https://github.com/tianocore/edk2.git 开始编译BaseTools前先更新一下子模块:git submodule update --init ,然后:make -C BaseTools/ 问题1&a…...

C语言项⽬实践-贪吃蛇

目录 1.项目要点 2.窗口设置 2.1mode命令 2.2title命令 2.3system函数 2.Win32 API 2.1 COORD 2.2 GetStdHandle 2.3 CONSOLE_CURSOR_INFO 2.4 GetConsoleCursorInfo 2.5 SetConsoleCursorInfo 2.5 SetConsoleCursorPosition 2.7 GetAsyncKeyState 3.贪吃蛇游戏设…...

智慧安防丨以科技之力,筑起防范人贩的铜墙铁壁

近日,贵州省贵阳市中级人民法院对余华英拐卖儿童案做出了一审宣判,判处其死刑,剥夺政治权利终身,并处没收个人全部财产。这一判决不仅彰显了法律的威严,也再次唤起了社会对拐卖儿童犯罪的深切关注。 余华英自1993年至2…...

Spring:IoC/DI加载properties文件

Spring框架可以通过Spring的配置文件完成两个数据源druid和C3P0的配置(Spring:IOC/DI配置管理第三方bean),但是其中包含了一些问题,我们来分析下: 这两个数据源中都使用到了一些固定的常量如数据库连接四要素&#xf…...

Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Docker 概述 1.1 Docker 主要组成部分 1.2 Docker 安装 2.0 Docker 常见命令 2.1 常见的命令介绍 2.2 常见的命令演示 3.0 数据卷 3.1 数据卷常见的命令 3.2 常见…...

深挖C++赋值

详解赋值 const int a 10; int b a;&a 0x000000b7c6afef34 {56496} &a 0x000000b7c6afef34 {10} 3. &b 0x000000b7c6afef54 {10} 总结: int a 10 是指在内存中(栈)中创建一个int (4 byte)大小的空间…...

【免越狱】iOS砸壳 可下载AppStore任意版本 旧版本IPA下载

软件介绍 下载iOS旧版应用,简化繁琐的抓包流程。 一键生成去更新IPA(手机安装后,去除App Store的更新检测)。 软件界面 支持系统 Windows 10/Windows 8/Windows 7(由于使用了Fiddler库,因此需要.Net环境…...

【python笔记02】面向对象思想

关于面向对象要学会啥? 面向对象编程思想面向对象基本概念 对象类 添加和获取对象属性魔术方法(三个常见的)面向对象案例 面向对象编程思想 两个时代的两个产物,没有好坏之分,小系统用面向过程,团队开发…...

Java基础-Java多线程机制

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、引言 二、多线程的基本概念 1. 线程与进程 2. 多线程与并发 3. 多线程的优势 三、Java多线程的实…...

MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并--封装到存储过程中

MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并–封装到存储过程中 我们的最终目的是什么?当然的自动执行这些合并操作! 上一篇 MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并 我们已经知道怎么合…...

MATLAB向量元素的引用

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

leetcode-44-通配符匹配

题解: 代码: 参考: (1)牛客华为机试HJ71字符串通配符 (2)leetcode-10-正则表达式匹配...

基于YOLOv8深度学习的智慧课堂学生专注度检测系统(PyQt5界面+数据集+训练代码)

本研究提出了一种基于YOLOv8深度学习的智慧课堂学生专注度检测系统,旨在实现对课堂中学生专注度的实时分析与评估。随着智慧教育的快速发展,学生的课堂表现和专注度成为评估学习效果的重要因素之一。然而,传统的专注度评估方法往往依赖于主观…...

vue项目使用eslint+prettier管理项目格式化

代码格式化、规范化说明 使用eslintprettier进行格式化,vscode中需要安装插件ESLint、Prettier - Code formatter,且格式化程序选择为后者(vue文件、js文件要分别设置) 对于eslint规则,在格式化时不会全部自动调整&…...

Java基础-组件及事件处理(中)

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 BorderLayout布局管理器 说明: 示例: FlowLayout布局管理器 说明: …...

UNIX网络编程-TCP套接字编程(实战)

概述 TCP客户端/服务器程序示例是执行如下步骤的一个回射服务器: 客户端从标准输入读入一行文本,并写给服务器。服务器从网络输入读入这行文本,并回射给客户端。客户端从网络输入读入这行回射文本,并显示在标准输出上。 TCP服务器…...

python编写一个自动清理三个月以前的邮件脚本

以下是一个使用 Python 编写的自动清理三个月以前的邮件的脚本。这个脚本适用于连接支持 IMAP 协议的邮箱服务,例如 Gmail。请注意,在执行此操作时,您需要提供电子邮件账号和应用程序专用密码(建议不要使用普通密码,并…...

C++组合复用中,委托的含义与作用

委托(Delegation)的含义与作用 委托是一种软件设计技术,它允许一个对象在处理某个请求时,将请求的处理责任转移给另一个对象。委托的核心思想是通过组合(composition)而不是继承(inheritance&a…...

自制C++游戏头文件:C++自己的游戏头文件!!!(后续会更新)

引言 在这个数字时代,计算机游戏已经成为人们生活中不可或缺的一部分。它们不仅为我们带来了无尽的乐趣,还激发了我们的创造力和解决问题的能力。今天,我们将深入探讨一个特别的头文件——CPPgame.h,它包含了多个结构体和函数&am…...

java 读取 有时需要sc.nextLine();读取换行符 有时不需要sc.nextLine();读取换行符 详解

在 Java 中,使用 Scanner 类读取输入时,换行符的处理行为取决于所用的读取方法。不同方法的工作原理会影响是否需要额外调用 sc.nextLine() 来清理缓冲区中的换行符。 核心问题 根本原因:Scanner 是基于输入流工作的,而换行符&am…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

ip子接口配置及删除

配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦&#xff0…...