此教程讲述了protobuf安装过程中我遇到的问题和一些尝试的办法,教程还存在问题,安装protobuf时make check无法通过,最后尝试了很多办法也无法解决,最后采用其他的安装版本得到解决....................
目录
第二步,输入命令,过程比较长,大概需要20多分钟,需要耐心等待。
目录
第2步,输入命令,过程比较长,大概需要20多分钟,需要耐心等待。
第7步,继续操作,输入命令,make check,此处执行中报了一些错误,暂不知道会有什么影响。网上说可以忽略这个错误。
第8步,继续操作,安装命令,sudo make install
第9步,检查版本,输入命令protoc --version测试是否安装成功
第七步,继续操作,输入命令,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
第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
第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
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
此文件通过命令行下载好像比较卡,建议使用浏览器下载,如下图:
B.下载完成后解压文件,得到googletest-release-1.8.1
$tar -zxvf googletest-release-1.8.1.tar.gz
C.把googletest-release-1.8.1放入protobuf/third_party文件夹中,删除原来的googletest,再将googletest-release-1.8.1命名为googletest,如下图:
D.重新执行./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: 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
C.编辑完成后,输入命令sudo ldconfig
$sudo ldconfig
D.再次输入命令protoc --version,查看版本,可以看到输出版本号,说明protc安装完成。
$protoc --version
第10步,下载P4c项目目录
此文件下载时间可能比较长。
$git clone --recursive https://github.com/p4lang/p4c.git
第11步,进入p4c文件夹,建立build目录
$cd p4c
$mkdir build
$cd build
第12步,继续操作
$cmake ..
第13步,继续操作
$make -j4
第14步,继续操作,单元测试
$make -j4 check
第15步,继续操作
$sudo make install
第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
第2步,进入behavioral-model目录,并运行脚本
$cd 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