一、环境准备
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
sudo apt install meson ninja pkg-config gcc-multilib
二、创建交叉编译配置文件
[binaries]
# 交叉编译器路径(绝对路径/系统PATH中的别名)
c = 'aarch64-linux-gnu-gcc'
cpp = 'aarch64-linux-gnu-g++'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
pkgconfig = 'pkg-config' # 若目标机有 pkg-config,可指定目标机路径
ninja = '/usr/bin/ninja'
[host_machine]
# 目标架构:根据实际修改(aarch64/armv7l/mips64等)
system = 'linux'
cpu_family = 'aarch64'
cpu = 'cortex-a72' # 目标CPU型号(可选,如 cortex-a53、x86_64)
endian = 'little'
[properties]
# 目标机内核头文件路径(关键!必须匹配目标机内核版本)
c_args = ['-I/path/to/target/linux-headers-5.15.0-101-arm64/include']
c_link_args = ['-L/path/to/target/lib64', '-lpthread', '-ldl']
# 禁用宿主机依赖检测,强制使用交叉编译环境
pkg_config_libdir = ['/path/to/target/usr/lib/aarch64-linux-gnu/pkgconfig']
# DPDK 特有配置:禁用不支持的驱动/功能
dpdk_cross = true
dpdk_disable_drivers = 'net/e1000,net/ixgbe' # 禁用目标机无的网卡驱动
dpdk_enable_kmods = false # 交叉编译时不编译内核模块(目标机单独编译)
- 确保配置文件无中文、特殊符号(如「・」「¥」),仅用 ASCII 字符;
- 验证文件编码:
file -i dpdk_cross_arm64.txt
# 输出:charset=utf-8 → 正常;若为 gbk/iso-8859-1,需转换
iconv -f GBK -t UTF-8 dpdk_cross_arm64.txt -o dpdk_cross_arm64_utf8.txt
三、DPDK 交叉编译实操
1. 源码准备
# 下载 DPDK 源码(以 22.11 为例)
wget https://fast.dpdk.org/rel/dpdk-22.11.tar.xz
tar -xf dpdk-22.11.tar.xz
cd dpdk-22.11
2. 初始化 Meson 构建目录
通过 --cross-file 指定交叉配置文件,同时设置关键参数:
# 创建构建目录
meson setup build-arm64 \
--cross-file=/path/to/dpdk_cross_arm64.txt \
--prefix=/opt/dpdk-arm64 # 编译后安装路径
3. 编译与安装
# 编译(-j 后跟核心数,加速编译)
ninja -C build-arm64 -j$(nproc)
# 安装到指定路径
ninja -C build-arm64 install
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。