Ubuntu 无法“使安装”ovs

Ubuntu 无法“使安装”ovs,ubuntu,makefile,debian,openvswitch,dpdk,Ubuntu,Makefile,Debian,Openvswitch,Dpdk,我按照指南安装带有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 '/us

我按照指南安装带有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日起使用比提交更新的OVS主机。此提交为OVS添加了对dpdk-16.07的支持。

它失败,因为OVS2.5“稳定版本”不支持dpdk 16.07(仅支持dpdk2.1)。您可以在下载的目录文件INSTALL.dpdk.md中确认dpdk版本支持

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

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

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

cd/usr/src

wget.tar.gz

tar-zxvf openvswitch-.tar.gz

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

这样做

*OVS当前的开发可以使用“git”工具克隆

cd/usr/src/

git克隆

导出OVS_DIR=/usr/src/OVS*


错误将被解决

lib/netdev dpdk.c:708:11:错误:函数“rte_vhost_driver_register”的参数太少。
这是一个使生成失败的错误。@Nagri:您能解决这个问题吗?如果是这样的话,你能为你所做的事写一篇回复吗?我也面临同样的问题。@ghost204nit我放弃了DPDK,开始默认使用OVS。正如亚历克·伊斯托明的回答所暗示的,这是一个版本问题。我将等待下一版本中的稳定支持。