P4編程環境搭建遇到的問題與解決方法


在經歷了無數的折騰之后,算是折騰,最后采用的是陳翔學長的腳本加上可愛的shell調整裝好的。 鏈接:p4Install

也許是ubuntu18.04的問題,也有可能是我自己把這個系統折騰的有點雜亂的原因,中途出現的問題一度讓我抓瞎了好久。


安裝p4c-bm

命令

 1 //安裝pip
 2 sudo apt-get install python-pip
 3 //克隆庫
 4 git clone https://github.com/p4lang/p4c-bm.git
 5 cd p4c-bm
 6 //安裝python相關的組件
 7 sudo pip install -r requirements.txt 
 8 sudo pip install -r requirements_v1_1.txt
 9 //運行安裝的py腳本
10 sudo python setup.py install

 

問題

問題是出在最后一條命令,顯示的錯誤是

1 Traceback (most recent call last):
2     File "setup.py", line 25 in <module>
3         import p4c_bm
4     File "/home/user/p4Installer/p4c_bm/p4c_bm/__init__.py", line 23, in <module>
5         from version import get_version_str
6 ModuleNotFoundError:No module named 'version'

 

 

錯誤的意思就是找不到version這個模塊,因為setup.py要調用的模塊和其不在一個目錄下,所以在相對應的目錄p4c<bm下有個__init__.py的文件來幫助執行,但是卻找不到同目錄下的version模塊。 其實第一時間我的修改方法是將原語句修改成了

 

1 from .version import get_version_str

 

然后這玩意又找不到同目錄下的_version了,最后在詢問過學長之后,了解到這個setup.py是在python2環境下運行的,然而18.04的系統默認運行的貌似是3?而這個代碼正好與3不兼容,就會產生沖突,在3中反而要使用absolute imports。於是將命令修改為

1 sudo python2 setup.py install

 

就成功了。ヽ(✿゚▽゚)ノ


安裝bmv2

命令

 1 sudo git clone https://github.com/p4lang/behavioral-model.git
 2 sudo mv behavioral-model bmv2
 3 cd bmv2
 4 //安裝依賴
 5 sudo ./install_deps.sh
 6 //編譯bmv2
 7 sudo ./autogen.sh 
 8 sudo ./configure --disable-logging-macros --disable-elogger 
 9 sudo make -j8 
10 //安裝
11 sudo make install
12 //更新共享庫
13 sudo ldconfig

 

 

關於make后面的參數-j是並行的意思,根據自己電腦cpu的核心情況選擇,可以加快編譯的速度。

問題

這里我出於習慣在其中加入了一句make check來檢查編譯以后的結果是否可用。 然后就被報了錯:

查看完testsuit.log之后發現是thrift的問題,然后就跑到鏡像網站上下了一份thrift0.12.0的壓縮包來安裝,結果安裝還出錯了,說什么缺少java的組件,導致buildfaild。真是坑中帶坑,最后發現是自己openjdk有問題,干脆就下了個oracle的jdk8(其實jdk9也會報錯)。然后就安裝成功了。 然后繼續重裝bmv2,然后繼續同樣的報錯。(°ー°〃),心中一萬只草泥馬呀。 折騰了一天,最終去問了問學長,結果讓我嘗試了下安裝。 結果居然,安裝成功了,成功了,功了。既然你安裝沒有問題,你報錯個什么勁啊。又是系統的鍋嘍。


安裝p4c

這玩意需要挺多依賴的,還需要安裝protobuf,然后gcc/g++和cmake。

問題

  • 原腳本中gcc和g++采用的是4.9的,這個在新的系統里已經找不到源了,所以我就直接用gcc/g++ 5.5的版本了。
  • cmake也是,那個源甚至沒有了release,所以cmake我是用的3.10的。
  • 然后更悲慘的是安裝到一半,分配給ubuntu的硬盤滿了……,然后又迫不得已轉到u盤系統分了點硬盤給/目錄。
  • 然后最后我在處理完一切編譯之后又來了一次make check。這次更狠了,fail了將近200個……一狠心,安裝!然后又沒報錯……合着又玩我呢。

總結

雖然不知道以后使用會不會出現新的問題,感覺又挖了許多坑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM