ubuntu 20.04 编译安装 p 详解
事情的起因
- 实验需要安装 p4 环境
- 我考虑到我自己的电脑性能不足,因此打算在本机安装
- github上官方仓库的安装教程老旧,都是在 ubuntu14.04或者ubuntu16.04
- 我长时间用的linux系统是 ubuntu20.04
鉴于以上原因,我开始自己对p4安装的专研。。
这个是我自己写的shell脚本,已经在 ubuntu 20.04上测试通过
先放上官网
[p4 github](https://github.com/p4lang/)
[p4 官网](https://p4.org/)
然后是踩的坑
- 使用了anacond,使得后续找不到python库,另外使用sudo或root安装库会导致安装的位置混乱
- 按照官方教程安装,由于版本比较旧,导致源码编译不通过,通过更新编译不通过的源码包会因为p4各个模块的版本之间的依赖问题使得环境检测make check出错
- 计算机性能较差,编译卡死过很多次
解决方案
以p4c着手,倒推各个依赖源码的版本,当依赖的版本无法编译时,更新源码和依赖该源码的模块
以下是我自己写的shell脚本对应的解释
设置各个模块的版本(因为各个版本之间有特定的以来关系)
配置 ovs 并将安装日志写入对应文件
mininet 的安装,最后一行是 mininet 的测试,需要启动 ovs ( ovs-ctl start )
p4 安装中重要的依赖关系:protobuf
p4安装中重要的依赖关系:grpc
bmv2 和 PI 模块的重要依赖
PI 模块的编译安装
bmv2 模块的编译安装
p4c 的编译安装
p4 使用参考文档
至此就安装好了,脚本中有些 make check 可以安装好再测试.....
因为如果之前安装过 p4,但出现了错,注释掉的那些 make check 可能导致脚本报错停止。。。
由于时间比较匆忙,没有做过多的 p4 介绍,,有时间再添加内容吧。。。
ubuntu 20.04 编译安装 p 详解的更多相关文章
- Windows XP硬盘安装Ubuntu 12.04双系统图文详解
Windows XP硬盘安装Ubuntu 12.04双系统图文详解 Ubuntu 12.04 LTS版本于2012年4月26日发布,趁着五一放假,赶紧在自己的Windows XP的电脑上安装下Ubun ...
- Windows XP硬盘安装Ubuntu 16.04双系统图文详解
需要下载的东西有两个,一个是grub4dos,另一个是Ubuntu 16.04 LTS的镜像文件,具体下载地址如下: 1 2 3 1.grub4dos 点击下载 grub4dos 2 ...
- Ubuntu19.04的安装过程详解以及操作系统初始化配置
Ubuntu19.04的安装过程详解以及操作系统初始化配置 ...
- linux PHP 编译安装参数详解
linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
- 对<< ubuntu 12.04编译安装linux-3.6.10内核笔记>>的修正
前题: 在前几个月的时候,写了一篇笔记,说的是kernel compile的事情,当时经验不足,虽说编译过了,但有些地方写的有错误--因为当时的理解是有错误的.今天一一更正,记录如下: 前文笔记链接: ...
- Ubuntu 20.04 版本安装
Ubuntu 20.04 版本安装 安装步骤 首先创建好Ubuntu 20.04虚拟机 等待系统检查完整性 选择语言 选择不更新,回车确定 键盘语言默认即可 网卡IP配置 设置代理服务器 设置源 自定 ...
- Ubuntu 20.04上安装MySQL教程,ubuntu安装mysql
在Ubuntu 20.04上安装MySQL教程 先决条件 确保您以具有sudo特权的用户身份登录. 在Ubuntu上安装MySQL 在撰写本文时,Ubuntu存储库中可用的MySQL的最新版本是MyS ...
- PHP7 学习笔记(一)Ubuntu 16.04 编译安装Nginx-1.10.3、 PHP7.0.9、Redis3.0 扩展、Phalcon3.1 扩展、Swoole1.9.8 扩展、ssh2扩展(全程编译安装)
==================== PHP 7.0 编译安装================== wget http://cn2.php.net/get/php-7.0.9.tar.bz2/fr ...
- LAMP架构编译安装过程详解
linux Git 安装 1.安装git依赖包 . yum install -y perl-ExtUtils-MakeMaker package . yum install -y tcl build- ...
随机推荐
- php 二维数组排序详解: array_multisort
定义和用法 array_multisort() 函数返回一个排序数组.您可以输入一个或多个数组.函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序. 注释: ...
- hdu4530 水题
题意: 小Q系列故事--大笨钟 Time Limit: 600/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total ...
- hdu4450 不错的贪心
题意: 卡片游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total S ...
- hdu5033 最大仰望角
题意: 给你n个楼房排成一条直线,楼房可以看成是宽度为1的线段,然后给你m组询问,每组询问给你一个坐标,输出在当前坐标仰望天空的可视角度. 思路: n比较大,O(n*m)肯定跪 ...
- hdu4971 流-最大权闭包
题意: 给了一些任务,然后给了一些完成某些任务的限制,然后又给了限制之间的拓扑关系,最后问你最大收益. 思路: 很直白,就是流的一个应用,最大权闭包,没涉及到什么想法的地方,建 ...
- John the Ripper破解密码
目录 John the Ripper 破解Linux系统密码 破解Windows系统密码 John the Ripper John the Ripper是一个快速的密码破解工具,用于在已知密文的情况下 ...
- 简化mapstruct代码: mapstruct-spring-plus
mapstruct MapStruct 是一个属性映射工具,只需要定义一个 Mapper 接口,MapStruct 就会自动实现这个映射接口,避免了复杂繁琐的映射实现.MapStruct官网地址: h ...
- 【JavaScript】Leetcode每日一题-移除元素
[JavaScript]Leetcode每日一题-移除元素 [题目描述] 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用 ...
- 【maven】mvn不是内部命令 也不是可运行的程序
按解压.配置环境变量,重启cmd,还是出现这个问题 使用java -version确定是不是安装了jdk.因为maven是java开发,需要依赖jdk 将系统变量中Path的%MAVEM_HOME%\ ...
- 【c#】 使用Directory.GetFiles获取局域网中任意电脑指定文件夹下的文件
本文为老魏原创,如需转载请留言 格式如下: // 获取IP地址为10.172.10.167下D盘下railway下的所有文件 string[] picArray = Directory.GetFile ...