事情的起因

  1. 实验需要安装 p4 环境
  2. 我考虑到我自己的电脑性能不足,因此打算在本机安装
  3. github上官方仓库的安装教程老旧,都是在 ubuntu14.04或者ubuntu16.04
  4. 我长时间用的linux系统是 ubuntu20.04

鉴于以上原因,我开始自己对p4安装的专研。。

这个是我自己写的shell脚本,已经在 ubuntu 20.04上测试通过


先放上官网

[p4 github](https://github.com/p4lang/)
[p4 官网](https://p4.org/)

然后是踩的坑

  1. 使用了anacond,使得后续找不到python库,另外使用sudo或root安装库会导致安装的位置混乱
  2. 按照官方教程安装,由于版本比较旧,导致源码编译不通过,通过更新编译不通过的源码包会因为p4各个模块的版本之间的依赖问题使得环境检测make check出错
  3. 计算机性能较差,编译卡死过很多次

解决方案

以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 详解的更多相关文章

  1. Windows XP硬盘安装Ubuntu 12.04双系统图文详解

    Windows XP硬盘安装Ubuntu 12.04双系统图文详解 Ubuntu 12.04 LTS版本于2012年4月26日发布,趁着五一放假,赶紧在自己的Windows XP的电脑上安装下Ubun ...

  2. Windows XP硬盘安装Ubuntu 16.04双系统图文详解

    需要下载的东西有两个,一个是grub4dos,另一个是Ubuntu 16.04 LTS的镜像文件,具体下载地址如下:   1 2 3       1.grub4dos  点击下载 grub4dos 2 ...

  3. Ubuntu19.04的安装过程详解以及操作系统初始化配置

    Ubuntu19.04的安装过程详解以及操作系统初始化配置                                                                       ...

  4. linux PHP 编译安装参数详解

    linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

  5. 对<< ubuntu 12.04编译安装linux-3.6.10内核笔记>>的修正

    前题: 在前几个月的时候,写了一篇笔记,说的是kernel compile的事情,当时经验不足,虽说编译过了,但有些地方写的有错误--因为当时的理解是有错误的.今天一一更正,记录如下: 前文笔记链接: ...

  6. Ubuntu 20.04 版本安装

    Ubuntu 20.04 版本安装 安装步骤 首先创建好Ubuntu 20.04虚拟机 等待系统检查完整性 选择语言 选择不更新,回车确定 键盘语言默认即可 网卡IP配置 设置代理服务器 设置源 自定 ...

  7. Ubuntu 20.04上安装MySQL教程,ubuntu安装mysql

    在Ubuntu 20.04上安装MySQL教程 先决条件 确保您以具有sudo特权的用户身份登录. 在Ubuntu上安装MySQL 在撰写本文时,Ubuntu存储库中可用的MySQL的最新版本是MyS ...

  8. 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 ...

  9. LAMP架构编译安装过程详解

    linux Git 安装 1.安装git依赖包 . yum install -y perl-ExtUtils-MakeMaker package . yum install -y tcl build- ...

随机推荐

  1. Mysql之读写分离架构-Atlas

    Atlas介绍 1.png ​ Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目. 它是在mysql-proxy 0.8.2版本的基础上, ...

  2. 1148 Werewolf - Simple Version

    Werewolf(狼人杀) is a game in which the players are partitioned into two parties: the werewolves and th ...

  3. 869. Reordered Power of 2

    Starting with a positive integer N, we reorder the digits in any order (including the original order ...

  4. Python爬取笔趣阁小说,有趣又实用

    上班想摸鱼?为了摸鱼方便,今天自己写了个爬取笔阁小说的程序.好吧,其实就是找个目的学习python,分享一下. 1. 首先导入相关的模块 import os import requests from ...

  5. 关于height:100%

    要想高度百分比起作用,一般来说,要满足两个条件:其一,父标签有高度可寻,就是向上遍历父标签要找到一个定值高度(body,html另外讨论),如果中途有个height为auto或是没有设置height属 ...

  6. hdu1466 递推

    题意:       给你n条直线,不会存在三线共点,输出所有的可能交点数.. 思路:       这个是个地推的题目,假设当前的线段i,他里面有r条是随意的,有(i - r)条是平行的,那么当前的交点 ...

  7. Android平台下Dalvik层hook框架ddi的研究

    通过adbi,可以对native层的所有代码进行hook.但对于Android系统来说,这还远远不够,因为很多应用都还是在Dalvik虚拟机中运行的. 那么,有没有什么办法可以对Dalvik虚拟机中跑 ...

  8. Linux配置yum源(本地源和网络源)

    目录 一:配置本地yum源 二:配置网络yum源 更新源可以获取最新的软件信息,以更新您的系统 Redhat7配置源 YUM(Yellow dog  Updater Modified): yum是Re ...

  9. LAMP环境搭建一个Discuz论坛

    LAMP是Linux+Apache+Mysql/MariaDB+Perl/PHP/Python的简称.一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有 ...

  10. Linux中数据库的安装和配置(MySQL与Maria DB)

    目录 MySQL和Maria DB的介绍 MySQL和Maria DB的安装 yum源安装MySQL(Centos6.5+Mysql5.1) 源码包安装MySQL yum源安装Maria DB 源码包 ...