> 前言:
雖然ns3已經出來好多年了,但是鑑於ns2的資料相對多些,目前大多數論文中用的仿真器還是ns2比較多。今年Ubuntu已經更新到了16.04或者16.10,網上的一些教程略微需要改動,鑑於此,總結了下面的安裝步驟,其中會提到運行中常出現的問題以及解決方法。參考的博客網址有:
Ubuntu 15.10安裝ns2.35+nam
SUMO仿真快速入門系列四:Ubuntu 12.04 安裝ns2.35
> 步驟一:更新一下系統的安裝包,
這個有的時候很有必要,Ubuntu的源有時會莫名其妙的不能用了
sudo apt-get update #更新源列表
sudo apt-get upgrade #更新已經安裝的包
sudo apt-get dist-upgrade #更新軟件,升級系統
> 步驟二:安裝ns2運行時需要的三個依賴包
sudo apt-get install build-essential
sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev #for tcl and tk
個人說明一下:安裝這個依賴包後,在以後調試涉及./configure時會提示找不到tcl的路徑,解決方法是 ./configure –with-tcl-ver=8.5
sudo apt-get install libxmu-dev libxmu-headers #for nam
> 步驟三:下載安裝包並編譯安裝
建議下載後直接放在目錄/home/用戶名/,若是放在其他比如usr/等下面,必須切換root賬號才能進行操作,編輯時會出現各種頭疼的操作
tar xvfz ns-allinone-2.35.tar.gz #這個可以圖形化操作
cd ns-allinone-2.35 #這個可以圖形化操作
./install #進行安裝
第一次安裝報錯:
linkstate/ls.h:137:20: note: use ‘this->erase’ instead
make: * [linkstate/ls.o] Error 1
Ns make failed!
修改ls文件,位置是:ns-2.35/linkstate/ls.h
第137行
void eraseAll() { erase(baseMap::begin(), baseMap::end()); }
改爲:void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }
保存後,重新然後執行 ./install #重新安裝順利完成
這是因爲ubuntu16.04的gcc編譯版本太高,而ns2.35是2011年發佈的,當時ubuntu的gcc版本比較低的,需要注意的是gcc4.4版本後,有些格式不能向下兼容,好吧,這個問題很是頭疼,最笨也是最直接的方法就是直接改動源碼,把出現問題的代碼部分改成能被高版本gcc編譯的格式,如上所示:
> 步驟四:配置環境變量
> 步驟五:驗證ns是否安裝成功
關閉終端,重啓終端,輸入ns,出現%,說明ns2安裝成功
注意:環境變量配錯的話,會提示“程序“ns”尚未安裝。 此時請勿使用以下命令安裝:
sudo apt-get install ns2
應該繼續在步驟4中修改環境變量!
> 步驟六:測試ns並驗證nam是否安裝成功
測試:
cd ns-allinone-2.35/ns-2.35/tcl/ex/
ns simple.tcl
倘若彈出動畫演示框,則證明ns完全安裝正確,下面的問題也不需要看了,至此結束。
倘若提示nam沒有安裝(Ubutnu16.04沒有出現這個問題)
進入nam目錄:cd ns-allinone-2.35/nam-1.15
進入後 ./configure –with-tcl-ver=8.5
然後 make
最後 make install
命令行輸入nam彈出nam console說明nam安裝成功。
“段錯誤,核心文件已轉儲”