Ubuntu20.04 NS3安裝配置
阿新 • • 發佈:2021-08-11
說在前面
- 根據自己Ubuntu版本,選擇相應的ns3版本
- 比如我是Ubuntu20.04,選擇的是ns3 3.30.1,之前選擇了ns3 3.26,在進行./build時會發生如下問題
- 參考task in 'ns3-wifi' failed或者‘ns3-network‘ failed錯誤後更改了下載物件,就這個折騰來回快一天
- 安裝ns3的時候,命令全部加sudo
安裝參考
- 最初參考的是這篇Ubuntu下的NS3安裝與入門,因為前面說的那個報錯解決不了,最後選擇了參考官方說明文件安裝
- 官方說明文件
安裝說明
- 官方說明文件前面都是廢話,從第三部分開始有用,但是也包含很多廢話
首先安裝依賴,依賴網址 ,可以從官方說明文件的這個位置找到這個網址
- 在依賴網址的下圖的位置開始才是Ubuntu系列的安裝方法
- 他裡面有說明哪些版本的Ubuntu分別需要安裝什麼東西,看仔細一些,當然如果偷懶,也可以直接全下,但記得下載全部要sudo
- 我的依賴安裝時,
apt install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev ipython
這個依賴是無法安裝的,提示英文版“無法定位本地可用包”,因為這個是在下載視覺化軟體,因此使用NetAnim代替 - 依賴都安裝完以後不要點選jump to installation,也不要去做
回到官方說明文件之後,直接快進到3.2.1,只做3.2.1
- 圖中第一塊指令在建立一個叫workspace的資料夾,然後進入資料夾,然後在資料夾裡面wget下載ns3相應版本的壓縮包,然後解壓
- 圖中第二塊指令要先進入 ns-allinone-3.xx 資料夾,才用ls檢視這個檔案裡面有什麼,可以比對一下,基本是沒有問題
- 除了官方說明文件裡面的wget下載方式,也可以直接到ns3 download,點選黃色的ns-allinone-3.30.1就可以下載壓縮包,然後跟官方說明文件裡面一樣解壓操作,ls就可以了。
編譯ns3,直接繼續快進到3.3,只做3.3.1
- 注意:他這個
./build.py --enable-examples --enable-tests
的兩個--以及後面的內容也要複製到終端執行 - 繼續快進到3.3.3
- 執行
./waf clean
和./waf configure --build-profile=optimized --enable-examples --enable-tests
兩條指令,結果可以和官方說明文件裡面給出的比對一下,是不是正確安裝了。 - 這一步,看到他的sorry了嗎?我承認我一開始沒看到。
- 這個是把waf清空,再編譯一遍,編譯的這個過程要等比較久。
- 看到sorry的朋友,執行完
./waf clean
和./waf configure --build-profile=optimized --enable-examples --enable-tests
以後,3.3.3剩下內容不用做了,可以繼續快進到3.4
測試
- 執行
./test.py -c core
,然後結果和官方說明文件裡面給出的比對一下,是不是正確。
樣例
- 比對完就可以到3.5了
- 看見Congratulations了嗎?勝利在前方!
- 執行
./waf --run hello-simulator
如果出現Hello Simulator,那麼Congratulations! - 如果沒有看到,官方說明文件也有給出解決方案,即
- 跑完這倆,再跑一次
./waf --run hello-simulator
就有了
總結
- 來來回回折騰一天,根本原因是ns3版本和Ubuntu版本不匹配,這是萬萬沒想到的,這個過程因為誤會了./build出不來結果的原因,而學到了一些其他知識:
- Linux cannot remove 'XXX': Is a directory 解決辦法,我是用了rm -rf temp這種型別
- 如何在Ubuntu中建立文件,我是用了touch
- Ubuntu安裝gcc3.4並新增到備選項裡,Ubuntu 20.04(64位)如何配置gcc-3.4用於編譯linux-0.11,這是當時以為./build出不來是因為gcc等級太高,就要給他降級而下的gcc3.4和g++3.4,一般第一個教程就可以解決了,一般用不上第二個。
- gcc、g++版本降級
- apt-get update ,upgarde 和dist-upgrade 的區別
- 出現og.h:323:44: error: ambiguous overload for ‘operator<<’ (operand types are ‘ns3::ParameterLogger’ and ‘ns3::FatalImpl::{anonymous}::destructor*’)報錯,考慮用python2來編譯
- 以及之前發的部落格的那一部分