安装pktgen-dpdk-23.10.0报依赖的numa找不到

解决DPDKpktgen安装过程中的依赖问题
本文介绍了在安装DPDK的pktgen工具时遇到的dependencynuma缺失问题,以及后续解决CMake配置错误和安装Doxygen、Sphinx的过程。

1、下载链接

Release pktgen-23.10.0: clang-format update · pktgen/Pktgen-DPDK · GitHub

2、解压后执行meson build,报app/meson.build:40:0: ERROR: Dependency "numa" not found, tried pkgconfig

4、安装cmake

cmake报错CMake Error: Could not find CMAKE_ROOT_vah101的博客-CSDN博客

5、安装完cmake,再去pkt-gen执行meson build

6、将查找方式由dependency('numa', required: true)改为cc.find_library('numa', required: true),再次进入pkt-gen执行meson build,依赖的numa库成功找到

后面报的两个错误,doxygen和sphinx-build程序找不到问题,直接安装对应程序即可

sudo apt-get install doxygen

sudo apt-get install python3-sphinx

 

### 如何安装 pktgen-dpdk 工具 #### 一、环境准备 为了成功安装 `pktgen-dpdk`,需要确保开发环境中已经满足必要的依赖项。以下是常见的准备工作: 1. **升级 GCC 版本** 官方推荐将 GCC 升级至 4.9 及以上版本以减少潜在的编译问题[^3]。 2. **安装必要软件包** 需要提前安装一些基础库和工具链支持: - Kernel 开发头文件:`kernel-devel`, `kernel-headers` - 用户权限管理库:`libcap`, `libcap-devel` - NUMA 支持库(部分版本可能需要):`numactl`, `numactl-devel` 使用以下命令来安装这些依赖项(适用于 CentOS 系统): ```bash sudo yum groupinstall "Development Tools" sudo yum install kernel-devel kernel-headers libcap libcap-devel numactl numactl-devel ``` --- #### 二、DPDK安装与配置 在安装 `pktgen-dpdk` 前,需确认 DPDK 能够正常工作并完成基本设置。 1. **设置环境变量** 将 DPDK SDK 和目标架构路径定义为全局变量以便后续调用: ```bash export RTE_SDK=/path/to/your/dpdk export RTE_TARGET=x86_64-native-linuxapp-gcc ``` 2. **编译 DPDK 并验证功能** 进入 DPDK 源码目录后执行如下操作: ```bash cd $RTE_SDK make config T=$RTE_TARGET make -j$(nproc) make install DESTDIR=. ``` 如果一切顺利,则继续进行下一步。 3. **初始化硬件资源** 执行脚本来分配大页内存以及绑定网卡设备到用户空间驱动程序中: ```bash cd $RTE_SDK/usertools/ ./dpdk-setup.sh ``` --- #### 三、Pktgen-DPDK安装过程 根据不同的版本号选择合适的安装方法。 ##### 方法 A: 经典 Makefile 构建方式 (适合旧版) 1. 下载源代码仓库: ```bash git clone http://dpdk.org/apps/pktgen-dpdk.git cd pktgen-dpdk ``` 2. 设置构建参数并与已有的 DPDK 库关联起来: ```bash export RTE_SDK=/path/to/your/dpdk export RTE_TARGET=x86_64-native-linuxapp-gcc make ``` 3. 若无任何错误提示则说明构建完毕;此时可到生成的应用程序位于当前目录下的 `build/app/pktgen` 文件位置处。 ##### 方法 B: Meson/Ninja 新型构建流程 (推荐用于较新版本如 v21+) 1. 获取指定分支上的最新稳定发布版本: ```bash git clone --depth 1 --branch pktgen-21.03.1 https://github.com/pktgen/Pktgen-DPDK.git cd Pktgen-DPDK ``` 2. 初始化项目结构并通过 Ninja 实现快速增量式编译: ```bash meson build ninja -C build sudo ninja -C build install sudo ldconfig ``` 注意:如果在此阶段遇到缺少 `numa` 依赖的情况,请参照前面提到的方法补充相应 RPM 包后再重试一次即可解决该类问题[^5]。 --- #### 四、启动与初步测试 当所有组件都部署完成后就可以尝试运行简单的流量发生场景了! 假设两块物理接口已被正确加载进 VFIO-PMD 中作为数据平面通道使用的话,那么可以直接输入下面这条命令行字符串来进行交互式的控制台界面体验模式下发送单播帧向远端主机传递信息流活动情况观察效果如何? ```bash ./build/app/pktgen -c f -n 4 \ --proc-type auto \ --socket-mem 1024,1024 \ --file-prefix pg \ -lcores="1S:0" \ -a <port_id>:<mac_address> ``` 其中各选项含义解释如下表所示: | 参数名 | 描述 | |--------------|----------------------------------------------------------------------| | `-c f` | CPU核心掩码表示法指派哪些逻辑CPU参与处理任务 | | `-n 4` | 内存分段数量 | | `--proc-type` | 多进程模型类型 | | `--socket-mem`| 各NUMANode节点预留的大页RAM容量大小 | | `--file-prefix`| 共享对象存储前缀命名 | | `-lcores` | 明确指出具体线程映射关系 | | `-a` | 添加特定MAC地址对应的网络适配器 | --- ### 总结 上述文档详细描述了从零开始搭建基于 Linux 发行版的操作系统之上实现高性能网络性能评估所需的全套解决方案步骤指导手册内容涵盖了前期准备工作直至最终实际应用案例演示整个生命周期内的各个环节要点分析总结希望对你有所帮助[^1][^2][^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值