此教程講述了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