Linux内核调试环境(centos+gdb+qemu)

2023-05-16

一、写在前面

主要介绍qemu在Centos中的安装过程,以及遇到的一些麻烦。网上教程好多都是在Ubuntu环境下的安装,但是公司给的环境大都是Centos,没办法花了一天的时间,磕磕绊绊弄好了。

QEMU的安装方式一般有两种:

方式1:一种是使用yum源安装:这种方式对于qemu-system-x86_64命令不识别。

yum install qemu-kvm

方式2:使用QEMU源码进行编译安装,会比较复杂,可能需要安装各种依赖,但可以解决上述问题。

二、QEMU源码编译安装:

下载源码:官网地址:https://www.qemu.org/download/

可以下载安装包后解压,也可用git下载,两种方式在官网主页就有。我这里使用安装包的方式,以下是整个安装的过程,三步:配置./configure生成Makefile——编译源码——安装。

wget https://download.qemu.org/qemu-7.0.0.tar.xz
tar xvJf qemu-7.0.0.tar.xz
mkdir build && cd build  #在下载目录新建文件夹build,一般不会在源码目录中编译。

//配置
../configure --prefix=/usr/local/qemu --target-list="x86_64-softmmu"
#--prefix 指定安装的目录,其实默认好像也是这个目录。
#--target-list 这里只配置了x86_64平台,想要其他平台可以用 ./configure --help 查看可以配置的平台。
//编译
make -j16     #有8个内核
//安装
make install  

./configure是一个脚本,会自动检查系统环境,比如编译构建工具是否齐全,源码目录、依赖库目录、安装目录、系统平台和构架信息等其他编译选项。这些信息可以保持默认或通过参数传递给configure。然后configure会根据这些信息生成一个Makefile文件。

make命令会根据Makefile进行编译过程,参数 -j 用来指定编译过程可以同时并行任务的个数,一般为CPU核数的倍数。

make install是将编译好的二进制文件安装到系统上。

三、编译安装过程的问题:

1、./configre过程中:这个过程可能会出现各种问题,缺少各种依赖和库文件。

(1)ERROR: Cannot find Ninja 

解决办法:安装re2c,安装Ninja,在安装Ninja时很有可能python版本不够高,还得升级python的版本。

参考文档:CentOS 7 安装 re2c 和 ninja

Ninja源码安装

CentOS7升级Python3版本    

Python镜像网站  国内通过官网下载python时超级慢,用镜像网站会快很多。

以上几个文档基本解决了我的问题,可以好好参考一下。

(2)ERROR: glib-2.48 gthread-2.0 is required to compile QEMU

解决办法:安装对应的包

yum install glib2 glib2-devel

(3)ERROR:Dependency "pixman-1" not found, tried pkgconfig

解决办法:没有安装pixman,下载pixman源码后编译安装。下载地址:pixman源码地址

wget https://www.cairographics.org/releases/pixman-0.40.0.tar.gz  #下载的是0.40版本
tar -xzvf pixman-0.40.0.tar.gz
cd pixman-0.40.0
./configure    #生成Makefile文件
make && make install  #编译及安装

安装完成后,找到pixman-1.pc的路径 ,然后修改PKG_CONFIG_PATH它的值:

[root@awesome build]# find / -name "pixman-1.pc"
/usr/local/lib/pkgconfig/pixman-1.pc
[root@awesome build]# export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"   //设置环境变量

使用export设置的环境变量,在另一个shell中是不会生效的,所以后续可能还要设置环境变量。

参考文档:centos安装qemu遇到Dependency “pixman-1“ not found的问题

(4)ERROR: glib-2.56 gthread-2.0 is required to compile QEMU

解决办法:

# yum install glib2
# yum install glib2-devel

(5)ERROR: Dependency "sdl2" not found

解决办法:SDL2是一种多媒体的包文件,如果想要启动qemu界面的话,要正确配置。我把yum search sdl找到的源能安装的都安装了,还是不行,最后找到官网下载源码安装的,可以按这个文档操作:sdk安装

        这个要是实在安装不了,或者安装了即支持了sdl,而qemu界面也启动不了也没关系,用命令行调试也可以,不影响。

git clone https://github.com/libsdl-org/SDL
cd SDL
mkdir build
cd build
../configure
make
sudo make install

安装后的截图:这是安装了所有的平台。

四:总结

不同的环境下可能会遇到各种问题,我能收集并解决的问题如上了,解决不了的大家慢慢搜索吧,多分享。

另几个参考文档也可以看一看:

Booting a Custom Linux Kernel in QEMU and Debugging It With GDB

搭建 Linux 内核网络调试环境(vscode + gdb + qemu)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux内核调试环境(centos+gdb+qemu) 的相关文章

  • 系统集成项目管理工程师 下午 真题 及考点(2021年上下半年)

    文章目录 2021年下半年试题一 xff1a 第18章 项目风险管理 xff0c 风险应对策略 xff0c 风险的性质 xff08 客观 偶然 相对 社会 不确定 xff09 试题二 xff1a 第9章 项目成本管理 xff0c 执行绩效
  • 系统集成项目管理工程师 下午 真题 及考点(2020年下半年)

    文章目录 2020年下半年试题一 xff1a 第10章 项目质量管理 xff0c 规划质量管理过程的输入试题二 xff1a 第9章 项目成本管理 xff0c 典型 xff1a EAC 61 AC 43 ETC 61 AC 43 xff08
  • FreeSWITCH之lua脚本事件订阅

    目录 相关接口简要说明 Even EventConsumer pop获取事件 bind订阅 代码示例 事件创建 事件订阅 FreeSWITCH中通过订阅事件 xff0c 我们能获取到各种实时信息 xff0c 进而可以对通话进行精确的控制 在
  • 超级基础A*寻路教程

    download code resource 学习了一下A 算法 xff0c 但是天生对算法无奈 xff0c 还好一不小心找到下面这篇文章 如果你苦于无法理解网上各大牛人的巅峰讨论以及他们火星文般的源代码 xff0c 那么这篇文章实在是太适
  • Cannot find module ‘body-parser‘

    node modules下模块缺失 解决方案 xff1a npm install span class token operator span save body span class token operator span parser
  • C#中struct和class的区别

    本文详细分析了C 中struct和class的区别 xff0c 对于C 初学者来说是有必要加以了解并掌握的 简单来说 xff0c struct是值类型 xff0c 创建一个struct类型的实例被分配在栈上 class是引用类型 xff0c
  • 沁恒MCU串口使用指南

    转载注明出处 沁恒MCU串口使用指南 xff1a 适用于WCH的32位MCU和CH559 558单片机 只描述TTL电平的TX 43 RX形式的常规串口 xff0c 流控 xff0c RS232 RS485不在文章涉及范围之内 大部分8位机
  • ubuntu安装网络调试助手

    下载mNetAssist安装包 链接 https pan baidu com s 1eHalZSnsVKXRERmIOCfj0w 提取码 bhxs新建终端并切换到安装包所在目录sudo dpkg i mNetAssist release a
  • .s19 文件转换为 .hex 和 .bin文件的方法

    使用STVD开发时 xff0c 编译后产生的是 s19 文件 xff0c 与Keil 和 IAR常见的 hex bin文件不同 xff0c 那么如何将 s19文件转换为常见的文件格式呢 xff1f 一 获取工具 burner 下载链接 xf
  • VS Code中C/C++ 无法跳转到定义的解决办法

    VS code的跳转功能一直很迷 xff0c 时好时坏 xff0c 有些新的工程环境干脆用不了 经过一遍遍的baidu加上自己的摸索 xff0c 总结出一套经验 xff0c 应该可以解决大部分的情况了 一 首先 xff0c 当然是安装插件了
  • 使用void*强转函数指针(编辑中)

    别把函数名当成函数 xff0c just a 变量 typedef void AirCb void 空回调函数 typedef int aimFunction int para1 char para2 int para3 要传递的目标函数
  • KoroFileHeader 配置

    一 安装插件 二 Github 地址 https github com OBKoro1 koro1FileHeader 三 快速上手 https github com OBKoro1 koro1FileHeader wiki E5 AE 8
  • 网络接入与身份认证简介

    目录 1 认证简介 2 常见认证机制 基于口令的身份认证机制 挑战 响应认证机制 EAP认证机制 3 公钥认证机制 4 使用认证机制的认证协议 RADIUS认证协议 TACACS 43 认证协议 Kerberos认证协议 LDAP协议 5
  • VS Code常见问题

    1 更改自动补全 xff08 联想 xff09 快捷键的方法 文件 gt 首选项 gt 键盘快捷方式 搜索trigger 找到该选项 xff0c 更改快捷键 2 当鼠标悬停在枚举值上 xff0c 不能显示当前序号 a 打开setting j
  • 用Keil编译C51和ARM时,分别生成.Bin文件的方法

    一 C51 1 使用srec cat exe a Keil工程需生成 hex文件 b 将srec cat exe放在工程路径中任意文件夹下 c 新建一个文本文档 xff0c 之后填写如下内容 xff0c 保存后更名为 1 bat xff08
  • Keil新建Stm32标准工程中 Preprocessor Symbols的作用

    xff08 转自正点原子的回复 xff09 标准的工程新建办法 是要添加 34 USE STDPERIPH DRIVER STM32F10X HD的 USE STDPERIPH DRIVER 是告诉编译器 我们需要使用标准库了 实际上是 c
  • 单片机中利用Union联合体打印输出浮点数(小数)

    方法一 xff1a 指针 UART串口有一个缺点 xff0c 就是发送和接受是一个字节一个字节的接收 xff0c 如果发送的浮点数那可怎么办啊 xff1f 有人会说 xff0c 那就一个字节一个字节发送啊 那么 xff0c 我先定义一个do
  • 用 IAR 开发 STM8 时,简单软件延时不起作用的原因

    近期有幸接手了前任工程师遗留的项目 xff0c MCU 选择的是 STM8L151XX xff0c 开发工具使用的是 IAR 打开祖传代码后 xff0c 通读了一遍 xff0c 就用ST Link烧录进去跑程序 xff0c 结果发现和预想的
  • 基于SX1276芯片的 LORA 技术开发详解

    一 简介 LORA xff0c 是 Long Range 的简称 LORA 技术 xff0c 源自于美国的升特公司 xff08 Semtech xff09 xff0c 是一种用于中 长距离传输的技术 xff0c 相关信息主要从升特公司官网获
  • Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组

    include lt stdio h gt include lt stdlib h gt unsigned char a2x const char c switch c case 39 0 39 39 9 39 return unsigne

随机推荐

  • 超声波换能器的主要参数解读,全!

    1 导纳是阻抗的倒数 xff0c 也就是一个代表困难程度的量 xff0c G为电导 xff0c B为电纳 导纳Y是一个复数 xff0c Y 61 G 43 jB xff1b 实部为电导 xff0c 虚部为电纳 G越大 xff0c 说明电荷越
  • 温度对超声波换能器的影响

    我们都知道超声波换能器的主要参数有 xff1a 谐振频率 反谐振频率 谐振阻抗 反谐振阻抗 输出幅值 静态电容等 在平时使用换能器的时候 xff0c 除了超声波换能器有自身损耗的影响外 xff0c 很可能使用场合出现在室内或室外 xff0c
  • RC522模块学习

    目录 1 原理简介 2 SPI通信 3 获取卡号实验 3 驱动函数 参考 xff1a https www cnblogs com ivantang p 3904025 html https xiaolong blog csdn net ar
  • 从零学习GCC,Makefile,CMakeList编译

    近期想系统地学习一下C 43 43 软件开发 xff0c 因此记录一下自己的学习笔记 xff0c 方便复习 大多数内容都是整理搬运别的博主文章内容 xff0c 加上自己的理解归纳 如果大家想了解更深的内容或者有不明白的地方 xff0c 可以
  • AS608指纹模块

    目录 1 简介 2 上位机测试 3 stm32程序 1 简介 AS608指纹识别模块是一款高性能的光学指纹识别模块 模块配备了串口 USB通讯接口 xff0c 用户无需研究复杂的图像处理及指纹识别算法 xff0c 只需通过简单的串口 USB
  • 两个hc05蓝牙模块在两块单片机上通信(附完整代码)

    目录 第一步 xff1a 进入AT模式 第二步 xff1a 同时插在电脑上实现通信 第三步 xff1a 单片机上通信 代码链接 所需材料 xff1a 两个hc05蓝牙 xff0c 两个usb转串口模块 xff0c 两块单片机 第一步 xff
  • 代码随想录day2 leetcode977,209,59,54

    977 有序数组的平方 class Solution public vector lt int gt sortedSquares vector lt int gt amp nums vector lt int gt res nums siz
  • 代码随想录day3 leetcode203,707,206,剑指offer 76题,62题

    链表基础知识 单链表的定义 单链表 struct ListNode int val 节点上存储的元素 ListNode next 指向下一个节点的指针 ListNode int x val x next NULL 节点的构造函数 不定义构造
  • 代码随想录day4 leetcode24,19,02.07面试题,142,138

    感觉链表最难的就是处理越界问题 24 两两交换链表中的节点 class Solution public 链表题很容易出现段错误 xff0c 一定要注意判断是否为空 ListNode swapPairs ListNode head ListN
  • http协议分析软件-Fiddler 教程

    Fiddler是最强大最好用的Web调试工具之一 xff0c 它能记录所有客户端和服务器的http和https请求 xff0c 允许你监视 xff0c 设置断点 xff0c 甚至修改输入输出数据 使用Fiddler无论对开发还是测试来说 x
  • STM32寄存器开发以及库函数开发的区别,库函数基础工程创建以及源文件和头文件的作用,手把手教你创建第一个STM32的LL库开发的工程

    一 序 本文主要是简述如何创建一个STM32的基础工程 xff0c 以及在工程文件中所添加文件 xff08 头文件以及原文件 xff09 的意义 本文不使用RTE xff0c 使用的芯片为STM32F103ZET6 xff0c KEIL x
  • C++ 万能库文件

    大家是不是通常使用 lt iostream gt 这个库文件呢 xff1f 有时用到了其他代码动不动就来个 error xff0c 非常麻烦对吧 xff0c 今天告诉大家一个万能库 xff0c 包含了c 43 43 大多数库 xff0c 那
  • 三维模型转变为点云模型的好工具——CloudCompare使用小记

    普通三维模型能够直观地展示物体的三维全貌 xff0c 但是在一些场合需要将三维模型变为相应的点云模型进行展示 xff0c 而使用激光雷达等传感器采集到的点云信息往往只能反应模型表面的情况 xff0c 或是使用PCL库中的可执行文件进行转换
  • MyString(字符串类)实现

    字符串类 xff08 MyString xff09 说明文档 一 MyString 类的组成 1 1 私有成员 char data 字符型指针 int length 整型字符串长度 1 2 共有成员 1 2 1 构造与析构函数 MyStri
  • ROMFS的建立

    参考 xff1a VxWorks 7 File Systems Programmer s Guide
  • MyMatrix(二维矩阵类)实现

    二维矩阵类 xff08 MyMatrix xff09 说明文档 一 MyMatrix 类的组成 1 1 私有成员 int row 二维矩阵行数 int col 二维矩阵列数 T data 二维矩阵数据 1 2 共有成员 1 2 1 构造与析
  • 基于CUDA和TCP通信的大数据双机加速计算(CUDA加速、内存优化、TCP多机协同)

    1 环境 技术简介 1 1 程序运行环境 1 server端计算机 操作系统 xff1a Ubuntu 18 04 5 LTS 运行环境 xff1a VSCode或Bash终端 2 client端计算机 操作系统 xff1a Ubuntu
  • RGB888转换为RGB565格式

    RGB888转换为RGB565格式 RGB888用unsigned int 32位字节存储 00000000R7 R6 R5 R4 R3 R2 R1 R0 G7 G6 G5 G4 G3 G2 G1 G0 B7 B6 B5 B4 B3 B2
  • Keil5界面配置

    配置一 xff1a 绿色 Specification for text selection and caret line selection fore 61 00FFFF selection back 61 004000 caret for
  • Linux内核调试环境(centos+gdb+qemu)

    一 写在前面 主要介绍qemu在Centos中的安装过程 xff0c 以及遇到的一些麻烦 网上教程好多都是在Ubuntu环境下的安装 xff0c 但是公司给的环境大都是Centos xff0c 没办法花了一天的时间 xff0c 磕磕绊绊弄好