yocto编译链交叉编译DPDK

本文详细介绍了如何在Ubuntu 20.04环境下使用meson和ninja工具编译DPDK,以及如何通过yocto编译链进行交叉编译,重点在于配置yocto交叉编译文件和设置正确头文件路径的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

之前编译过老版的dpdk,听说新版的dpdk编译都使用meson、ninja工具编译,和以前的方法不太一样,一直想体验一下。而且最近工作需要使用yocto的编译链,所以就尝试配置yocto的编译链来交叉编译下dpdk。

二、编译前准备

我的环境是ubuntu 20.04

安装meson ninja

pyelftools

apt-get install python3-pyelftools

Python 3.5 or later

libnuma-dev

libelf

从dpdk官网下载了dpdk-stable-20.11.4版本。

这些网上都有。

三、主机编译

Build libraries, drivers and test applicmeson buildations.

meson build
ninja -C build

meson build命令后,创建build目录,ninja命令编译后的结果文件都在这个目录中

也可以部分编译

 meson -Dexamples=all build
 ninja -C build

第一次配置编译目录后,可以重新配置目录,查看支持哪些配置参数可以使用

meson configure查看支持的配置

可以重新配置使能内核模块的编译,指定内核编译目录

build目录中修改配置,

meson configure -Denable_kmods=true -Dkernel_dir=/home/oem/test/

注意:其中kernel默认会查找的目录会为/home/oem/test/build

退到上一级目录,编译

ninja -C build

主机编译默认的机器类型为-Dplatform=native

上面这些官网文档介绍的很全。

四、使用YOCTO交叉编译链

使用yocto编译链交叉编译的格式为:

meson cross-build --cross-file <target_machine_configuration>

ninja -C cross-build

上面这个编译命令的关键就在于<target_machine_configuration>,刚开始没搞懂这个文件是个什么类型的文件,编译不成功。后来经过仔细查看官网文档后,发现dpdk的源码目录下有config/x86/cross-mingw,猜测这个文件就属<target_machine_configuration>,参考格式配置之后,出现找不到标准头文件如stdio.h之类的文件的错误,说明交叉编译的头文件路径配置的不对,说明配置方法不对,经过再查看官网文档,创建文件config/x86/cross-yocto

[binaries]

c_args = ['-target', 'x86_64-poky-linux', '--sysroot', '/home/oem/toolchain-test/sysroots/skylake-64-poky-linux']

c_link_args = ['-target', 'x86_64-poky-linux', '-fuse-ld=lld', '--sysroot', '/home/oem/toolchain-test/sysroots/skylake-64-poky-linux', '--gcc-toolchain=/home/oem/toolchain-test/sysroots/x86_64-pokysdk-linux/usr/bin']

[host_machine]

system = 'linux'

cpu_family = 'x86_64'

cpu = 'skylake'

endian = 'little'

这个文件就是yocto交叉编译DPDK的关键,也是本文的关键。

有了这个文件后,就可以编译了

使能yocto交叉编译变量

source ~/toolchain-test/environment-setup-skylake-64-poky-linux

配置工程

meson -Denable_kmods=true -Dkernel_dir=/home/oem/test/  yocto-cross-build --cross-file config/x86/cross-yocto

编译

ninja -C yocto-cross-build

感兴趣的同学加关注,欢迎一起交流学习 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值