yocto编译链交叉编译DPDK

一、背景

之前编译过老版的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

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Yocto Project 提供了一种用于构建嵌入式 Linux 发行版的框架,其中包括交叉编译工具的构建。通过 Yocto Project,您可以根据特定的硬件平台和软件需求,定制和构建适合您的嵌入式系统。 要构建 Yocto Project 的交叉编译工具,您需要执行以下步骤: 1. 配置环境:确保您的开发环境中已安装所需的工具,如 Git、Python 等。 2. 获取源码:从 Yocto Project 官方网站下载或使用 Git 克隆 Yocto Project 的源代码。 3. 配置构建:进入源码目录,运行 `source oe-init-build-env` 命令初始化构建环境。然后,通过辑 `conf/local.conf` 文件来配置构建选项,例如目标硬件平台、软件包选择等。 4. 执行构建:运行 `bitbake <image-name>` 命令来构建 Yocto Project 镜像。其中 `<image-name>` 是您想要构建的镜像名称,例如 core-image-minimal。 5. 等待编译完成:Yocto Project 的构建过程可能需要一些时间,具体取决于您的系统性能和所选择的软件包数量。 6. 使用工具:一旦构建过程完成,您将在 `tmp/sysroots/<target-arch>/` 目录下找到生成的交叉编译工具。可以将此路径添加到您的环境变量中,以便在开发过程中使用交叉编译工具。 请注意,以上步骤仅概述了构建 Yocto Project 交叉编译工具的基本过程。实际操作可能会因您的需求和特定的硬件平台而有所不同。建议参考 Yocto Project 官方文档以获取更详细的指导和信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值