P4使用Ubuntu中安装中的问题

此教程讲述了protobuf安装过程中我遇到的问题和一些尝试的办法,教程还存在问题,安装protobuf时make check无法通过,最后尝试了很多办法也无法解决,最后采用其他的安装版本得到解决....................

目录

1.系统环境

2.安装P4

(1)安装依赖库

(2)手工安装依赖库Protocol Buffers

第一步,输入如下命令

第二步,输入命令,过程比较长,大概需要20多分钟,需要耐心等待。

第三步,进入protobuf

第四步,继续操作

第五步,继续操作

目录

1.系统环境

2.安装P4

(1)安装依赖库

(2)手工安装依赖库Protocol Buffers

第1步,输入如下命令

第2步,输入命令,过程比较长,大概需要20多分钟,需要耐心等待。

第3步,进入protobuf

第4步,继续操作

第5步,继续操作

第6步,继续操作,make操作时间比较长需要等待。

第7步,继续操作,输入命令,make check,此处执行中报了一些错误,暂不知道会有什么影响。网上说可以忽略这个错误。

第8步,继续操作,安装命令,sudo make install

第9步,检查版本,输入命令protoc --version测试是否安装成功

第10步,下载P4c项目目录

第11步,进入p4c文件夹,建立build目录

第12步,继续操作

第13步,继续操作

第14步,继续操作,单元测试

(3)安装bmv2


 

第六步,继续操作,make操作时间比较长需要等待。

第七步,继续操作,输入命令,make check,此处执行中报了一些错误,暂不知道会有什么影响。

第八步,继续操作,安装命令,sudo make install

第九步,检查版本,输入命令protoc --version测试是否安装成功

第十步,


本教程主要参考该篇博客:https://www.sdnlab.com/19912.html ,正好本人需要搭建P4环境,因此记录下搭建过程,以帮助同样入门P4的同学。每个命令运行都配有我实际操作的运行截图。

过程真心比较麻烦,此教程很长,记录了我安装过程中遇到的问题,如果真的决定要安装,请务必多点耐心,过程不会太顺利。

1.系统环境

本文使用Ubuntu 16.04 LTS,内核版本Linux ubuntu 4.15.0-46-generic,应该影响不大,系统信息如下图:

系统信息

此外,安装过程需要用到git,没有安装git的话提前安装,安装命令如下:

$sudo apt-get install git

另外,先更新一下

$sudo apt-get install update
更新

2.安装P4

据同学说,P4安装比较复杂,因为种种原因,容易遇到很多问题,使用脚本一次性安装成功比较困难,因此建议手动一个一个文件安装。哪一步出错纠正即可。

(1)安装Protocol Buffers依赖库

安装一部分常用的依赖库,执行如下命令:

$sudo apt-get install g++ git automake libtool libgc-dev bison flex libfl-dev libgmp-dev libboost-dev libboost-iostreams-dev pkg-config python python-scapy python-ipaddr tcpdump cmake
安装依赖库

(3)手工安装依赖库Protocol Buffers

第1步,输入如下命令

A.源码编译安装,protocbuf的官网所列,protoc 有如下依赖:autoconf, automake, libtool, curl, make, g++, unzip, gmock,分两部分安装,先按照autoconf, automake, libtool, curl, make, g++, unzip,执行如下命令:

$sudo apt-get install autoconf automake libtool curl make g++ unzip
第一步

检查安装是否完成,输入以下命令:

$sudo apt-get install autoconf automake g++ curl libtool make unzip

出现如下图的输出,即***已经是最新版本,则表示安装完成。

B.然后安装gmock

下载googlemock源码,命令如下:

$git clone git://github.com/paulsapps/gmock-1.7.0 
下载googlemock源码
下载完成


 

第2步,输入命令,过程比较长,大概需要20多分钟,需要耐心等待。

$ git clone https://github.com/google/protobuf.git
安装出错

因为下载时间很长,也可以直接从我CSDN资源上下载,

备注:安装过程中遇到了如下报错,据说一般clone http方式的容易产生此问题,改成SSH的方式即可,因此我将https://改为了git://   后,错误消失。

参考博客:https://blog.csdn.net/it_liuchengli/article/details/77040806

重新输入如下命令安装。

$git clone git://github.com/google/protobuf.git
安装进行中
安装完成

第3步,进入protobuf

$cd protobuf 
进入protobuf

第4步,继续操作

$./autogen.sh
第四步

第5步,继续操作

$./configure
第五步开始
第五步结束

备注:此处操作最后有一个警告,configure: WARNING: no configuration information is in third_party/googletest,需要解决,不然会影响之后的操作。参考博客:https://blog.csdn.net/yzhang6_10/article/details/81482852?utm_source=blogxgwz3

这里需要下载googletest,下载地址:https://github.com/google/googletest/releases ,解压后放在protobuf-3.6.1/third_party文件夹下,并命名为googletest,然后重新从第四步./autogen.sh开始执行。

如果觉得googletest下载太麻烦,可从我的博客上下载,https://download.csdn.net/download/qq_34039018/11052633

A.首先,进入下载页面https://github.com/google/googletest/releases

googletest下载页面

zip下载地址:https://github.com/google/googletest/archive/release-1.8.1.zip

tar.gz下载地址:https://github.com/google/googletest/archive/release-1.8.1.tar.gz

解压命令的示例:

filename.tar.gz的解压:  tar -zxvf filename.tar.gz
filename.zip的解压:   unzip filename.zip

此文件通过命令行下载好像比较卡,建议使用浏览器下载,如下图:

浏览器下载googletest

B.下载完成后解压文件,得到googletest-release-1.8.1

$tar -zxvf googletest-release-1.8.1.tar.gz
解压文件
得到googletest-release-1.8.1

C.把googletest-release-1.8.1放入protobuf/third_party文件夹中,删除原来的googletest,再将googletest-release-1.8.1命名为googletest,如下图:

移动googletest-release-1.8.1并重命名为googletest

D.重新执行./autogen.sh

$./autogen.sh
重新执行./autogen.sh

E.再继续执行./configure,可以发现执行结束后,不再有警告。

$./configure
执行开始
执行结束

第6步,继续操作,make操作时间比较长需要等待。

$make
第六步开始
第六步结束

第7步,继续操作,输入命令make check,此处执行中报了一些错误,暂不知道会有什么影响。网上说可以忽略这个错误。

2019年3月27日14:12:18 修正:此错误会导致后面的安装出错,因此必须修正该错误,但遗憾的是尝试了很久也未能解决该问题,只好放弃安装,重头开始。

$make check
第七步开始
第七步结束

第8步,继续操作,安装命令,sudo make install

$sudo make install
第八步开始
第八步结束

第9步,检查版本,输入命令protoc --version测试是否安装成功

$protoc --version
差点protoc版本报错

此处报错:protoc: error while loading shared libraries: libprotoc.so.18: cannot open shared object file:No such file or directory

解决方法可参考博客:https://blog.csdn.net/xocoder/article/details/9155901

 分几步解决:

A.创建文件,在/etc/ld.so.conf.d目录下,使用sudo touch libprotobuf.conf命令创建libprotobuf.conf文件

$sudo touch libprotobuf.conf

B.使用Vim编辑libprotobuf.conf,插入内容:/usr/local/lib

使用Vim编辑

C.编辑完成后,输入命令sudo ldconfig

$sudo ldconfig

D.再次输入命令protoc --version,查看版本,可以看到输出版本号,说明protc安装完成。

$protoc --version
查看版本

第10步,下载P4c项目目录

此文件下载时间可能比较长。

$git clone --recursive https://github.com/p4lang/p4c.git
下载P4c项目目录

第11步,进入p4c文件夹,建立build目录

$cd p4c
进入p4c文件夹
$mkdir build
建立build目录
$cd build
进入build目录

第12步,继续操作

$cmake ..
第12步开始
第12步结束

第13步,继续操作

$make -j4
第13步开始
第13步结束

第14步,继续操作,单元测试

$make -j4 check
第14步开始
第14步结束

第15步,继续操作

$sudo make install
第15步开始
第15步结束

第16步,查看版本,检查是否安装成功

$p4c --version
查看安装版本

(3)安装bmv2

第1步,下载bmv2源码

$git clone https://github.com/p4lang/behavioral-model.git

如果出现之前下载protobuf的错误,建议将https改为git,使用如下命令下载:

$git clone git://github.com/p4lang/behavioral-model.git
下载bmv2源码

第2步,进入behavioral-model目录,并运行脚本

$cd behavioral-model
进入behavioral-model目录
$./install_deps.sh
开始运行
运行结束并报错

备注1:如果出现此错误,检查网络连接是否正常,我出现此错误的的时候发现时没连上网络。

网络未连接
网络已连接

备注2:如果之后出现如下图错误,解决方法在此处https://blog.csdn.net/qq_34039018/article/details/83684698

解决报错

输入如下两条命令,即可解决

$sudo rm /var/cache/apt/archives/lock
$sudo rm /var/lib/dpkg/lock

然后,重新执行此命令:

$./install_deps.sh
重新开始执行脚本
执行结束

第3步,继续操作

$./autogen.sh
第步
$./configure

http://thrift.apache.org/docs/install/

以下命令将安装在基于Debian / Ubuntu Linux的系统上构建和安装Apache Thrift编译器和C ++库所需的工具和库。

$sudo apt-get install automake bison flex g++ git libboost-all-dev libevent-dev libssl-dev libtool make pkg-config

更新一下,运行

$sudo apt-get update

然后再次重复操作。

$sudo apt-get install automake bison flex g++ git libboost-all-dev libevent-dev libssl-dev libtool make pkg-config

如果Debian 7 / Ubuntu 12用户需要手动安装更新版本的automake和(用于C ++库和测试支持)boost,因为我用的系统是Ubuntu16.04,因此不需要以下操作

$wget http://ftp.debian.org/debian/pool/main/a/automake-1.15/automake_1.15-3_all.deb
$sudo dpkg -i automake_1.15-3_all.deb

$wget http://sourceforge.net/projects/boost/files/boost/1.60.0/boost_1_60_0.tar.gz                                                                      $tar xvf boost_1_60_0.tar.gz
$cd boost_1_60_0
$./bootstrap.sh
$sudo ./b2 install

再次运行./configure

$./configure

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章