dpdk-20.11 rpm包编译
由于直接基于源码进行编译安装dpdk20.11比较麻烦,为了在不同设备上直接安装,使用rpm包直接安装比较方便,这里自己记录下本小白给dpdk20.11新增spec文件编译dpdk rpm包的流程。
基于上一篇dpdk的基础编译,也是在搭建meson ninjia编译环境基础上进行适配,在网上搜索过许多spec相关的语法,都比较基础,不怎么涉及高级用法,这里也仅记录自己摸索能成功安装到系统的rpm包构建过程。
第一步:安装rpmbuild工具,包括rpm-build和rpmdevtools。其中rpmdevtools可以选装,因为目前仅用于创建rpmbuild路径,也可以手动mkdir,实际rpm-build工具即可完成整个流程。这两个工具在centos上可以直接使用yum install来安装。
第二步:源码处理。这里将之前的20.11源码的文件夹改名为dpdk-20.11,为后面做铺垫。另外使用tar -czvf dpdk-20.11.tar.gz dpdk-20.11/命令进行打包,因为rpmbuild对于源码的处理不支持直接处理文件夹的形式。
第三步:创建rpmbuild编译路径,这里使用rpmdevtools工具的rpmdev-setuptree命令进行初始化,得到结果如下。
[root@localhost ~]# ls rpmbuild/
BUILD RPMS SOURCES SPECS SRPMS
这里创建了5个文件夹,从左到右的作用是:编译路径、rpm包输出路径、源码放置、spec文件放置、src rpm包输出路径。
第四步:创建spec文件。值得一提的是,在系统中直接创建后缀为.spec的文件,打开会直接有基础的框架,比较yin性。下面随意添加了下内容,分别是包名、版本、小版本、总结、平台类型、证书、URL、源码(这个需要和自己的tar包名一样)等等,可以自行查阅,目前只是做简单使用,没有太多要求,后续有需要再进行语法深入研究。
由于当前不需要准备工作,直接跳过prep,主要内容在build以及之后部分。build就是构建步骤,这里需要上一篇的meson build名,不同的是为了指定ninjia的安装路径,加了一个prefix参数,指定到/root/rpmbuild/BUILDROOT/dpdk-20.11-1.el7.x86_64(这个dpdk文件夹会自动生成)。后面两个命令就是基础的编译,与手动编译时一样。install 安装步骤,这里会直接把编译好的文件安装到前面指定的路径,效果如下:
[root@localhost SPECS]# ls /root/rpmbuild/BUILDROOT/dpdk-20.11-1.el7.x86_64/
bin include lib64 share usr
一共有5个文件夹,分别是执行文件、头文件、库文件、一些原码、debug文件。
files 指定打包文件,需要再此处指定需要打包的文件路径,改路径是相对于[root@localhost SPECS]# ls /root/rpmbuild/BUILDROOT/dpdk-20.11-1.el7.x86_64/的,不会识别为绝对路径。这里仅打包了我们运行需要的两个文件夹。
第五步:构建。这里把spec文件放入 /root/rpmbuild/SPECS, 直接在SPECS下使用rpmbuild -ba dpdk-20.11.spec即可进行构建。在构建过程中有几个比较坑的问题,均是一些文件检查导致打包不成功。提供以下规避思路,目前测试对安装使用rpm包无影响。
打开/root/.rpmmacros和/lib/rpm/macros,分别注释掉下面的代码(可以根据实际需要进行按需注释。另外如果是在files标签下把所有文件打包是没有问题的,此问题盲猜应该可以从ninjia入手控制输出文件路径)。
第六步:操作rpm包。使用rpm -ivh dpdk-20.11-1.el7.x86_64.rpm 即可安装成功,删除可以直接使用rpm -e dpdk命令删除,查询信息则可以使用rpm -qi dpdk查询,信息里面包括了spec中添加的标签字段。另外想看安装包安装的文件可以使用rpm -ql dpdk,直接看安装包文件可以加上-p选项指定rpm包文件。
dpdk-20.11 rpm包编译相关推荐
- dpdk 20.11编译kni和igb_uio
第一步:需要修改meson_option.txt打开kmod编译开关 第二步:从20.11开始,igb_uio不再包含在dpdk源码中,需要下载源码 git clone http://dpdk.org ...
- DPDK 20.11 Dynamic mbuf
目录 背景 解决方法 申请外部结构 增大mbuf的空间 多种布局 Dynamic mbuf 原理 使用/API 更大的额外空间的需求怎么办? 参考 背景 需要metadata的场景 通用的metada ...
- dpdk 20.02 igb_uio.ko 编译
dpdk从20.02版本以后默认不编译igb_uio.ko 更改config/common_base的 CONFIG_RTE_EAL_IGB_UIO=y 可以实现编译.
- 11.20 yum:自动化RPM包管理工具
yum(Yellow dog Updater Modified)是多个Linux发行版的软件包管理器,例如Redhat RHEL.CentOS和Fedora.yum主要用于自动安装.升级rpm软件包, ...
- 通过RPM包离线安装Clickhouse 20.3(LTS版本)
1.原因 由于公司内网服务器环境是不能联网的,没法通过在线方式安装.这里记录一下通过RPM包离线安装Clickhouse 20.3(LTS版本)的过程. 2.下载RPM包 (1)官方安装文档 http ...
- Linux安装和管理程序(包括rpm包安装、卸载、升级以及源码包的手工编译安装)
点击蓝色目录查找相应内容 Linux应用程序简介 应用程序与系统命令的关系 典型应用程序的目录结构 常见的软件包封装类型 RPM包管理工具 查询RPM软件包信息 查询已安装的RPM软件信息 查询未安装 ...
- 编译httpd-2.4.46的RPM包
目录 一.下载源码 二.编译&排错 2.1.第一次编译,解决依赖包问题. 2.2.第二次编译,解决anaconda导致的环境变量问题 2.3.第三次编译,解决apr版本过低问题 提供 apr- ...
- suse linux 软件包安装,SUSE Linux 11系统rpm包离线安装GCC
SUSE Linux 11系统rpm包离线安装GCC 1.问题显示 编译失败 python2.6环境下编译pycrypto-2.6.1 src/hash_template.c:360: warning ...
- linux环境怎么更新离线rpm包,SUSE Linux 11系统rpm包离线安装GCC
SUSE Linux 11系统rpm包离线安装GCC 1.问题显示 编译失败 python2.6环境下编译pycrypto-2.6.1 src/hash_template.c:360: warning ...
最新文章
- CB Insights发布最新AI 100排名,包含100家最有前景的AI初创公司
- 1D target tensor expected, multi-target not supported
- java类注入service为null_解决webservice(Java)中dao层注入为null问题
- 更新网盘(云存储)功能需求,免费网盘需求,手机数据备份
- Jboss4集群配置【转】
- asc码转换 linux_Linux终端下将图片转换ASCII Art代码图案
- SharePoint【学习笔记】-- SPWeb.EnsureUser()注意AllowUnsafeUpdates=true
- html5中布局命名,HTML5 发展中的命名约定和微格式
- 热烈庆祝《大数据》成功入选中国科技核心期刊目录~
- 如何去除word文档目录前面的黑点和目录后有一页空白页
- STM32-红外遥控
- 不浪费原料的汉堡制作方案--贪心算法
- 如何写好科研论文(笔记)
- 钟汉良日记:百善孝为先,其它都靠边
- jQuery 入门教程
- 【LeetCode-SQL】1527. 患某种疾病的患者
- Python小记 正则
- UNITY OCULUS QUEST开发入门教程 1 - 准备篇
- 【Python面向对象编程】第18篇 属性装饰器
- c++ error:C2504 提示未定义基类