前言
开工的第一步当然是要搭建好工作环境。根据任务的描述,我们需要编译构建出libvirt 8.2.0
RPM包,因此工作环境首先是要顺利完成源码编译的任务。因此本篇博客中,我们需要新建一个虚拟机,在虚拟机中安装openEuler 22.03 LTS
,拉取libvirt
库,根据libvirt
的文档手动编译出8.2.0
版本。
环境准备
以下是编译前需要准备的东西,由于过于简单,就不详细说明如何搭建的:
- 操作系统:
openEuler 22.03 LTS
,在虚拟机中安装,流程几乎和CentOS
一样 Meson
:libvirt 8.2.0
的构建工具,可以使用命令sudo pip3 install meson
安装Ninja
:libvirt 8.2.0
的构建系统,可以使用命令sudo pip3 install ninja
安装Clangd
:LLVM
推出的语法分析工具,使用compile_commands.json
文件分析项目代码,配合VSCode的Clangd插件使用起来很舒服,照着官方文档安装即可,文档地址在这里libvirt
其他依赖:好像还有xml什么的依赖,meson build
检查依赖的时候会有日志的,提示缺什么包用pip
照着安装就行了
编译
准备源码
在Gitee上Forklibvirt
仓库,地址在这里,并拉取到本地:1
2cd ~
git clone git@gitee.com:wengyu1/libvirt.git
从8.2.0
的Tag创建新的分支,命名为libvirt-8.2.0
:1
2cd libvirt
git branch libvirt-8.2.0 v8.2.0
编译
官方的编译文档在这里。由于我们不需要安装,因此我们直接编译构建即可,编译选项直接默认即可:1
2meson build
ninja -C build
顺利编译完成,速度还挺快的
链接
将build
文件夹中的compile_commands.json
链接到项目根目录,clangd
就会自动分析项目代码:1
ln -s `pwd`/build/compile_commands.json `pwd`
效果
验证下编译的效果:1
2cd build/tools
./virsh --version
效果如下图
至此,libvirt
的源码编译完成了,下一步可以编写RPM spec文件,使用rpmbuild
工具构建RPM包