我正在关注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
任何帮助将不胜感激 谢谢。
答案 0 :(得分:1)
OVS-2.5.0不支持dpdk-16.07。 从8月3日开始,使用比提交netdev-dpdk: Add support for DPDK 16.07更新的OVS主数据。此提交将对dpdk-16.07的支持添加到OVS。
答案 1 :(得分:1)
失败是因为OVS2.5"稳定释放"不支持dpdk 16.07(仅支持dpdk2.1)。您可以在下载的目录文件INSTALL.DPDK.md中确认dpdk版本支持。
话虽这么说,你可以用dpdk16.07运行ovs2.5,使用"当前开发的ovs"文档中的选项,而不是"稳定版本"选项。
因此,在this doc中,跳过以下选项:
* 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 clone https://github.com/openvswitch/ovs.git
导出OVS_DIR = / usr / src / ovs *
错误将被解决!!