DPDK
在Alpine Linux上。我在Docker中运行Alpine Linux。以下是我使用的步骤:
-
docker pull alpine
-
docker run -it alpine /bin/sh
-
wget https://git.dpdk.org/dpdk-stable/snapshot/dpdk-stable-16.11.8.tar.gz
-
tar -xzf dpdk-stable-16.11.8.tar.gz
-
cd dpdk-stable-16.11.8
-
apk add --no-cache make gcc libc-dev bsd-compat-headers linux-headers musl-dev
-
apk add numactl-dev --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted
-
make install T=x86_64-native-linuxapp-gcc
安装失败,并出现以下错误和警告:
配置完成
==生成库
==构建库/库兼容
==构建库/库/公共
==构建库/librte\u eal/linuxapp
抄送eal\u hugepage\u info.o
/dpdk/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u hugepage\u info.c:在函数“clear\u hugedir”中:
/dpdk/dpdk-stable-16.11.8/lib/librteïeal/linuxapp/eal/ealïhugepageïu info.c:229:8:警告:函数“openat”的隐式声明;你是说“波本”吗[-Wimplicit函数声明]
/dpdk/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u hugepage\u info.c:229:8:警告:“openat”的嵌套外部声明[-Wnested externs]
fd=打开(dir\u fd,dirent->d\名称,仅限O\ RDU);
^~~~~~~~
/dpdk/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u hugepage\u info.c:229:39:注意:每个未声明的标识符对于它出现的每个函数只报告一次
/dpdk/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u hugepage\u info.c:在函数“eal\u hugepage\u info\u init”中:
hpi->锁定描述符=打开(hpi->仅限hugedir);
波本
/dpdk/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u hugepage\u info.c:320:26:警告:“open”的嵌套外部声明[-Wnested externs]
/dpdk/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u hugepage\u info.c:320:45:错误:未声明“O\u RDONLY”(首次在此函数中使用)
^~~~~~~~
make[7]:***[/dpdk/dpdk-stable-16.11.8/mk/internal/rte.compile pre.mk:140:eal\u hugepage\u info.o]错误1
make[4]:***[/dpdk/dpdk-stable-16.11.8/mk/rte.subdir.mk:63:librte\u eal]错误2
make[3]:***[/dpdk/dpdk-stable-16.11.8/mk/rte.sdkbuild.mk:80:lib]错误2
make[1]:***[/dpdk/dpdk-stable-16.11.8/mk/rte.sdkinstall.mk:86:预安装]错误2
make:**[/dpdk/dpdk-stable-16.11.8/mk/rte.sdkroot.mk:101:安装]错误2
更新1
我修复了一些错误,但现在出现了新的错误。
以下是更新的步骤:
-
-
-
wget公司https://git.dpdk.org/dpdk-stable/snapshot/dpdk-stable-16.11.8.tar.gz
-
-
光盘dpdk-stable-16.11.8
-
-
-
添加
#include <fcntl.h>
到
lib/librte_eal/common/include/rte_common.h
-
添加
CFLAGS += -D_GNU_SOURCE
到
lib/librte_eal/linuxapp/eal/Makefile
-
安装现在失败,出现以下错误:
配置完成
==构建库/库兼容
==构建库/库/公共
抄送eal\u vfio\u mp\u sync.o
/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u vfio\u mp\u sync.c:在函数“vfio\u mp\u sync\u send\u fd”中:
/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u vfio\u mp\u sync.c:75:17:错误:“struct cmsghdr”没有名为“\u cmsg\u data”的成员
^
/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u vfio\u mp\u sync.c:187:2:注意:在宏“FD\u TO \u CMSGHDR”的扩展中
^~~~~~~~~~~~~
/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u vfio\u mp\u sync.c:在函数“vfio\u mp\u sync\u receive\u fd”中:
/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u vfio\u mp\u sync.c:78:24:错误:“struct cmsghdr”没有名为“\u cmsg\u data”的成员
内存(&P)(fd),(chdr).\u cmsg\u data,sizeof(fd))
^
/dpdk-stable-16.11.8/lib/librte\u eal/linuxapp/eal/eal\u vfio\u mp\u sync.c:228:2:注意:在宏“CMSGHDR\u TO\u FD”的扩展中
CMSGHDR\u到\u FD(*chdr,FD);
make[6]:***[/dpdk-stable-16.11.8/mk/rte.subdir.mk:63:eal]错误2
make[5]:***[/dpdk-stable-16.11.8/mk/rte.subdir.mk:63:linuxapp]错误
2
make[3]:***[/dpdk-stable-16.11.8/mk/rte.sdkbuild.mk:80:lib]错误2
make[1]:***[/dpdk-stable-16.11.8/mk/rte.sdkinstall.mk:86:预安装]错误2
make:**[/dpdk-stable-16.11.8/mk/rte.sdkroot.mk:101:安装]错误2
/usr/include/x86_64-linux-gnu/bits/socket.h
,
struct cmsghdr
定义如下:
/* Structure used for storage of ancillary data object information. */
struct cmsghdr
{
size_t cmsg_len;
/* Length of data in cmsg_data plus length
of cmsghdr structure.
!! The type should be socklen_t but the
definition of the kernel is incompatible
with this. */
int cmsg_level; /* Originating protocol. */
int cmsg_type; /* Protocol specific type. */
#if __glibc_c99_flexarr_available
__extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
#endif
};
__glibc_c99_flexarr_available
? 我能把这个弄出来吗?
更新2
我试着用
this
musl-dev
glibc
musl
. 按照步骤操作
here
. 现在我得到这样的错误:
/usr/include/limits.h:124:26:致命错误:limits.h:没有这样的文件或目录
#下一步包括