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

 

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