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

一、写在前面

主要介绍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)

猜你喜欢

转载自blog.csdn.net/Healer19/article/details/125875478