无法`make install` ovs

Cant `make install` ovs

我正在按照 this 指南使用 DPDK 安装 OVS。
我管理到 2.3 安装 OVS

 cd $OVS_DIR
 ./boot.sh
 ./configure --with-dpdk=$DPDK_BUILD

一切正常,没有任何错误,但是当我这样做时

make install

失败了。

这是输出

root@ubuntu:/usr/src/openvswitch-2.5.0# make install
make  install-recursive
make[1]: Entering directory '/usr/src/openvswitch-2.5.0'
Making install in datapath
make[2]: Entering directory '/usr/src/openvswitch-2.5.0/datapath'
make[3]: Entering directory '/usr/src/openvswitch-2.5.0/datapath'
make[4]: Entering directory '/usr/src/openvswitch-2.5.0/datapath'
make[4]: Nothing to be done for 'install-exec-am'.
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/usr/src/openvswitch-2.5.0/datapath'
make[3]: Leaving directory '/usr/src/openvswitch-2.5.0/datapath'
make[2]: Leaving directory '/usr/src/openvswitch-2.5.0/datapath'
make[2]: Entering directory '/usr/src/openvswitch-2.5.0'
depbase=`echo lib/netdev-dpdk.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.    -I ./include -I ./include -I ./lib -I ./lib -I/usr/include   -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat-security -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align -Wmissing-prototypes -Wmissing-field-initializers -fno-strict-aliasing -mssse3 -I/usr/src/dpdk-16.07/x86_64-native-linuxapp-gcc/include -D_FILE_OFFSET_BITS=64  -g -O2 -MT lib/netdev-dpdk.lo -MD -MP -MF $depbase.Tpo -c -o lib/netdev-dpdk.lo lib/netdev-dpdk.c &&\
mv -f $depbase.Tpo $depbase.Plo
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I ./include -I ./include -I ./lib -I ./lib -I/usr/include -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat-security -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align -Wmissing-prototypes -Wmissing-field-initializers -fno-strict-aliasing -mssse3 -I/usr/src/dpdk-16.07/x86_64-native-linuxapp-gcc/include -D_FILE_OFFSET_BITS=64 -g -O2 -MT lib/netdev-dpdk.lo -MD -MP -MF lib/.deps/netdev-dpdk.Tpo -c lib/netdev-dpdk.c -o lib/netdev-dpdk.o
lib/netdev-dpdk.c: In function ‘__rte_pktmbuf_init’:
lib/netdev-dpdk.c:293:5: warning: implicit declaration of function ‘RTE_MBUF_ASSERT’ [-Wimplicit-function-declaration]
     RTE_MBUF_ASSERT(mp->elt_size >= sizeof(struct dp_packet));
     ^
lib/netdev-dpdk.c: In function ‘netdev_dpdk_vhost_user_construct’:
lib/netdev-dpdk.c:708:11: error: too few arguments to function ‘rte_vhost_driver_register’
     err = rte_vhost_driver_register(netdev->vhost_id);
           ^
In file included from lib/netdev-dpdk.c:56:0:
/usr/src/dpdk-16.07/x86_64-native-linuxapp-gcc/include/rte_virtio_net.h:95:5: note: declared here
 int rte_vhost_driver_register(const char *path, uint64_t flags);
     ^
lib/netdev-dpdk.c: In function ‘is_vhost_running’:
lib/netdev-dpdk.c:995:32: error: dereferencing pointer to incomplete type ‘struct virtio_net’
     return (dev != NULL && (dev->flags & VIRTIO_DEV_RUNNING));
                                ^
lib/netdev-dpdk.c:995:42: error: ‘VIRTIO_DEV_RUNNING’ undeclared (first use in this function)
     return (dev != NULL && (dev->flags & VIRTIO_DEV_RUNNING));
                                          ^
lib/netdev-dpdk.c:995:42: note: each undeclared identifier is reported only once for each function it appears in
lib/netdev-dpdk.c: In function ‘netdev_dpdk_vhost_rxq_recv’:
lib/netdev-dpdk.c:1049:37: warning: passing argument 1 of ‘rte_vhost_dequeue_burst’ makes integer from pointer without a cast [-Wint-conversion]
     nb_rx = rte_vhost_dequeue_burst(virtio_dev, qid * VIRTIO_QNUM + VIRTIO_TXQ,
                                     ^
In file included from lib/netdev-dpdk.c:56:0:
/usr/src/dpdk-16.07/x86_64-native-linuxapp-gcc/include/rte_virtio_net.h:194:10: note: expected ‘int’ but argument is of type ‘struct virtio_net *’
 uint16_t rte_vhost_dequeue_burst(int vid, uint16_t queue_id,
          ^
lib/netdev-dpdk.c: In function ‘__netdev_dpdk_vhost_send’:
lib/netdev-dpdk.c:1138:43: warning: passing argument 1 of ‘rte_vhost_enqueue_burst’ makes integer from pointer without a cast [-Wint-conversion]
         tx_pkts = rte_vhost_enqueue_burst(virtio_dev, vhost_qid,
                                           ^
In file included from lib/netdev-dpdk.c:56:0:
/usr/src/dpdk-16.07/x86_64-native-linuxapp-gcc/include/rte_virtio_net.h:174:10: note: expected ‘int’ but argument is of type ‘struct virtio_net *’
 uint16_t rte_vhost_enqueue_burst(int vid, uint16_t queue_id,
          ^
lib/netdev-dpdk.c:1157:21: warning: implicit declaration of function ‘rte_vring_available_entries’ [-Wimplicit-function-declaration]
             while (!rte_vring_available_entries(virtio_dev, vhost_qid)) {
                     ^
lib/netdev-dpdk.c: In function ‘netdev_dpdk_get_stats’:
lib/netdev-dpdk.c:1526:33: error: ‘struct rte_eth_stats’ has no member named ‘imcasts’
     stats->multicast = rte_stats.imcasts;
                                 ^
lib/netdev-dpdk.c: In function ‘netdev_dpdk_get_features’:
lib/netdev-dpdk.c:1569:29: error: ‘ETH_LINK_AUTONEG_DUPLEX’ undeclared (first use in this function)
     if (link.link_duplex == ETH_LINK_AUTONEG_DUPLEX) {
                             ^
lib/netdev-dpdk.c:1574:32: error: ‘ETH_LINK_SPEED_10’ undeclared (first use in this function)
         if (link.link_speed == ETH_LINK_SPEED_10) {
                                ^
lib/netdev-dpdk.c:1577:32: error: ‘ETH_LINK_SPEED_100’ undeclared (first use in this function)
         if (link.link_speed == ETH_LINK_SPEED_100) {
                                ^
lib/netdev-dpdk.c:1580:32: error: ‘ETH_LINK_SPEED_1000’ undeclared (first use in this function)
         if (link.link_speed == ETH_LINK_SPEED_1000) {
                                ^
lib/netdev-dpdk.c:1593:32: error: ‘ETH_LINK_SPEED_10000’ undeclared (first use in this function)
         if (link.link_speed == ETH_LINK_SPEED_10000) {
                                ^
lib/netdev-dpdk.c: In function ‘set_irq_status’:
lib/netdev-dpdk.c:1825:45: warning: passing argument 1 of ‘rte_vhost_enable_guest_notification’ makes integer from pointer without a cast [-Wint-conversion]
         rte_vhost_enable_guest_notification(dev, idx + VIRTIO_RXQ, 0);
                                             ^
In file included from lib/netdev-dpdk.c:56:0:
/usr/src/dpdk-16.07/x86_64-native-linuxapp-gcc/include/rte_virtio_net.h:89:5: note: expected ‘int’ but argument is of type ‘struct virtio_net *’
 int rte_vhost_enable_guest_notification(int vid, uint16_t queue_id, int enable);
     ^
lib/netdev-dpdk.c:1826:45: warning: passing argument 1 of ‘rte_vhost_enable_guest_notification’ makes integer from pointer without a cast [-Wint-conversion]
         rte_vhost_enable_guest_notification(dev, idx + VIRTIO_TXQ, 0);
                                             ^
In file included from lib/netdev-dpdk.c:56:0:
/usr/src/dpdk-16.07/x86_64-native-linuxapp-gcc/include/rte_virtio_net.h:89:5: note: expected ‘int’ but argument is of type ‘struct virtio_net *’
 int rte_vhost_enable_guest_notification(int vid, uint16_t queue_id, int enable);
     ^
In file included from /usr/include/string.h:630:0,
                 from ./lib/string.h:20,
                 from lib/netdev-dpdk.c:19:
lib/netdev-dpdk.c: In function ‘new_device’:
lib/netdev-dpdk.c:1906:52: error: ‘IF_NAME_SZ’ undeclared (first use in this function)
         if (strncmp(dev->ifname, netdev->vhost_id, IF_NAME_SZ) == 0) {
                                                    ^
lib/netdev-dpdk.c:1915:27: error: ‘VIRTIO_DEV_RUNNING’ undeclared (first use in this function)
             dev->flags |= VIRTIO_DEV_RUNNING;
                           ^
lib/netdev-dpdk.c: In function ‘destroy_device’:
lib/netdev-dpdk.c:1953:16: error: dereferencing pointer to incomplete type ‘volatile struct virtio_net’
             dev->flags &= ~VIRTIO_DEV_RUNNING;
                ^
lib/netdev-dpdk.c:1953:28: error: ‘VIRTIO_DEV_RUNNING’ undeclared (first use in this function)
             dev->flags &= ~VIRTIO_DEV_RUNNING;
                            ^
In file included from /usr/include/string.h:630:0,
                 from ./lib/string.h:20,
                 from lib/netdev-dpdk.c:19:
lib/netdev-dpdk.c: In function ‘vring_state_changed’:
lib/netdev-dpdk.c:1996:55: error: ‘IF_NAME_SZ’ undeclared (first use in this function)
         if (strncmp(dev->ifname, vhost_dev->vhost_id, IF_NAME_SZ) == 0) {
                                                       ^
lib/netdev-dpdk.c: At top level:
lib/netdev-dpdk.c:2036:20: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
     .new_device =  new_device,
                    ^
lib/netdev-dpdk.c:2036:20: note: (near initialization for ‘virtio_net_device_ops.new_device’)
lib/netdev-dpdk.c:2037:23: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
     .destroy_device = destroy_device,
                       ^
lib/netdev-dpdk.c:2037:23: note: (near initialization for ‘virtio_net_device_ops.destroy_device’)
lib/netdev-dpdk.c:2038:28: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
     .vring_state_changed = vring_state_changed
                            ^
lib/netdev-dpdk.c:2038:28: note: (near initialization for ‘virtio_net_device_ops.vring_state_changed’)
lib/netdev-dpdk.c: In function ‘dpdk_vhost_cuse_class_init’:
lib/netdev-dpdk.c:2069:11: error: too few arguments to function ‘rte_vhost_driver_register’
     err = rte_vhost_driver_register(cuse_dev_name);
           ^
In file included from lib/netdev-dpdk.c:56:0:
/usr/src/dpdk-16.07/x86_64-native-linuxapp-gcc/include/rte_virtio_net.h:95:5: note: declared here
 int rte_vhost_driver_register(const char *path, uint64_t flags);
     ^
lib/netdev-dpdk.c: In function ‘is_vhost_running’:
lib/netdev-dpdk.c:996:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
Makefile:4027: recipe for target 'lib/netdev-dpdk.lo' failed
make[2]: *** [lib/netdev-dpdk.lo] Error 1
make[2]: Leaving directory '/usr/src/openvswitch-2.5.0'
Makefile:4679: recipe for target 'install-recursive' failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory '/usr/src/openvswitch-2.5.0'
Makefile:4985: recipe for target 'install' failed
make: *** [install] Error 2

我不明白我错过了什么。
DPDK 是 dpdk-16.07 OpenVSwitch 是 openvswitch-2.5.0 Ubuntu 是 Ubuntu 16.04.1 LTS

我们将不胜感激。
谢谢。

OVS-2.5.0 不支持 dpdk-16.07。 从 8 月 3 日起使用比提交 netdev-dpdk: Add support for DPDK 16.07 更新的 OVS master。此提交为 OVS 添加了对 dpdk-16.07 的支持。

失败是因为OVS2.5“稳定版”不支持dpdk 16.07(只支持dpdk2.1)。可以在下载的目录文件INSTALL.DPDK.md.

中确认dpdk版本支持

也就是说,您可以 运行 ovs2.5 和 dpdk16.07 通过使用文档中的“ovs 的当前开发”选项,而不是“稳定版本”选项。

因此,在 this 文档中,跳过以下选项

*OVS 稳定版可以从 Download OVS 下载压缩格式

cd /usr/src

wget http://openvswitch.org/releases/openvswitch-.tar.gz

tar-zxvf openvswitch-.tar.gz

导出OVS_DIR=/usr/src/openvswitch-*

这样做:

*OVS当前开发可以使用'git'工具克隆

cd /usr/src/

git 克隆 https://github.com/openvswitch/ovs.git

导出OVS_DIR=/usr/src/ovs*

错误将得到解决!!