前提:依赖关系请移步上篇博客。P4行为模型BMV2依赖关系安装:thrift nanomsg nnpy安装

以及,要把下面这些东西装好。

On Ubuntu 14.04, the following packages are required:

    automake
cmake
libjudy-dev
libgmp-dev
libpcap-dev
libboost-dev
libboost-test-dev
libboost-program-options-dev
libboost-system-dev
libboost-filesystem-dev
libboost-thread-dev
libevent-dev
libtool
flex
bison
pkg-config
g++
libssl-dev

Building the code

进入行为模型目录。

1. ./autogen.sh
2. ./configure
3. make

问题:make 发生错误

在ReadMe中有一句话:If you get a nanomsg error when running the tests (make check), try running them as sudo

但是 加上sudo之后,make仍然出现.lo文件错误。

查看make编译文件信息,发现是离开了src文件,于是就cd到src目录进行debug。

在src目录下make,仍然失败!

于是也不嫌麻烦,一个一个make过去。

在有些文件夹中遇到了make: Nothing to be done for 'all'.问题,这是因为之前编译过了。

执行以下命令重新make:

make clean
ldconfig
make

终于,在最后一个文件夹,make出现错误,[packet.lo]有问题。

在文件中找了下,发现没有packet.lo,于是查看了下packet.cpp,并执行gcc编译了下:

gcc packet.cpp

果然出现问题:两个头文件没有找到。

搜索了下,在include文件夹中找到了该文件,cp了过来。

但是,貌似头文件里面还是有包含头文件。。

于是发现了另外一个解决方法,把刚才的packet.h删除掉。

vim packet.cpp

include <packet.h> 改成 include </home/wasdns/behavioral-model/bm/bm_sim/packet.h>

于是gcc编译通过。但是,新的问题出现了:



看上去貌似是个无底洞。

重装make依然出现问题。

于是根据ReadMe的内容,进行了尝试,禁用掉了一些模块:

In 'debug mode', you probably want to disable compiler optimization and enable symbols in the binary:

./configure 'CXXFLAGS=-O0 -g'

再次执行make即可。

回到Building the code

于是根据上面的问题,应该的步骤是:

1. ./autogen.sh
2. ./configure 'CXXFLAGS=-O0 -g'
3. make

The new bmv2 debugger can be enabled by passing --enable-debugger to configure.

./configure --enable-debugger

Running the tests

跑一下样例。To run the unit tests, simply do:

make check

如果出现nanomsg error,请在命令前面加上sudo。

P4行为模型BMV2安装的更多相关文章

  1. P4行为模型BMV2依赖关系安装:thrift nanomsg nnpy安装

    由于安装p4factory的步骤需要OF的支持,我需要下载p4的行为模型BMV2: thrift是支持BMV2的软件框架:nanomsg是一个实现了几种"可扩展协议"的高性能通信库 ...

  2. P4语言环境安装(一)前端编译器p4c、后端编译器p4c-bm2-ss

    这个P4安装环境是在2020-2-8安装的,安装环境卡了我好几天,把遇到的问题记录下来,有需要的同学可以参考一下,要是说错了或者有问题的话,评论或mail:guidoahead@163.com联系我都 ...

  3. P4 PI库安装

    repo:Github PI P4Runtime - a control plane framework and tools for the P4 programming language 这个是P4 ...

  4. Run P4 without P4factory - A Simple Example In Tutorials.

    前言 本文是我运行P4社区于Github开源教程Tutorials中的P4 SIGCOMM 2015 Tutorial一些实战小结,Github链接: Github. 测试的例子:P4 SIGCOMM ...

  5. P4 前端编译器p4c-bm、后端编译器bmv2命令安装 make error问题

    参考:Github 安装p4c-bm: sudo pip install -r requirements.txt sudo pip install -r requirements_v1_1.txt / ...

  6. Ubuntu 16.04 一键安装P4开发环境记录

    写在最前 P4开发环境安装可采用陈翔同学的一键安装脚本:p4Installer p4c-bm是P4-14的编译器,p4c是现在主流P4-16的编译器,bmv2是支持P4运行的软件交换机 系统环境 在安 ...

  7. p4c-bm安装

    Generates the JSON configuration for the behavioral-model (bmv2).它是用来形成 行为模型BMV2 的 JSON配置 的. Importa ...

  8. P4编程环境搭建

    本文参照了sdnlab上相关文章的搭建推荐. 使用的系统环境为ubuntu 18.04 组件介绍 主要安装五个组件: BMv2:是一款支持P4编程的软件交换机 p4c:是一款P4的编译器 PI:是P4 ...

  9. P4编程环境搭建遇到的问题与解决方法

    在经历了无数的折腾之后,算是折腾,最后采用的是陈翔学长的脚本加上可爱的shell调整装好的. 链接:p4Install 也许是ubuntu18.04的问题,也有可能是我自己把这个系统折腾的有点杂乱的原 ...

随机推荐

  1. 键盘event.which属性

    IE中,只有keyCode属性,而FireFox中有which和charCode属性 event.which属性对DOM原生的event.keyCode和event.charCode进行了标准化. f ...

  2. map容器结构体离散化

    小数坐标离散化: #include"string.h" #include"stdio.h" #include"iostream" #incl ...

  3. Tomcat 400错误 问题集锦

    1.前后台参数类型不一致 上图错误提示就是客户端发送的请求不能找到你的具体的页面或者地址,这是Spring MVC抛出的错误,这样我们就要进行参数的检查,一定是JSP提交的参数和Controller里 ...

  4. How many ways??---hdu2157(矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2157   题意:有一个有向图,含有n个节点,m条边,Q个询问,每个询问有 s,t,p,求 s 到 t ...

  5. Redis缓冲区设置

    对于Redis服务器的输出(也就是命令的返回值)来说,其大小通常是不可控制的.有可能一个简单的命令,能够产生体积庞大的返回数据.另外也有可能因为执行了太多命令,导致产生返回数据的速率超过了往客户端发送 ...

  6. ovn-sb 摘要

    1.Database Structure Physical network table中包含了和chassis nodes有关的所有信息,包括用于overlay所需的IP地址,支持的tunnel类型以 ...

  7. Day03 javascript详解

    day03 js 详解 JavaScript的基础 JavaScript的变量 JavaScript的数据类型 JavaScript的语句 JavaScript的数组 JavaScript的函数 Ja ...

  8. android 第三方框架

    1.视频:jcvideoplayer 2.圆角:cardview 3.圆形头像:circleimageview 4.加载网络图片:universalimageloader 5.网络请求:xutils ...

  9. mysql中的多行查询结果合并成一个(转)

    SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 ...

  10. Underscore.js (1.7.0)-集合(Collections)(25)

    稽核函数(数组或对象) each_.each(list, iteratee, [context]) 别名: forEach 遍历list中的所有元素,按顺序用遍历输出每个元素.如果传递了context ...