1. 程式人生 > >Cygwin+NS2的安裝過程及問題解決

Cygwin+NS2的安裝過程及問題解決

先牢騷幾句:NS2的安裝真的是太麻煩了,而且網上找到安裝教程都是一個模樣,安裝起來出現各種問題。最近花了兩天多的時間,頗費周折,最終終於將Cygwin和NS2安裝成功了,如釋重負,倍感欣慰,在此特將小弟的安裝過程和心得共享出來,希望能為正在苦苦安裝NS2的朋友們提供些許幫助。Cygwin採用線上安裝,NS2選擇的是NS2.28。

1、首先肯定是安裝Cygwin了

這個直接在Cygwin的官網上下載,關於Cygwin的安裝網上教程很多,這裡只簡單介紹一下。其中最重要的是在選擇安裝包的時候一定記住將左下角的  hid obsolete package的勾選標記去掉,這樣才能找到所需要的所有包。包的選擇一定要把以下包都選上:

 gcc
       gcc-g++
       gnuplot
       make
       patch
       perl
       tar
       X-startup-scripts
       xorg-x11-base
       xorg-x11-bin
       xorg-x11-devel
       xorg-x11-bin-dlls
       xorg-x11-bin-lndir
       xorg-x11-etc
       xorg-x11-fenc
       xorg-x11-fnts
       xorg-x11-libs-data
       xorg-x11-xwin
 
     

 libxt-devel
       libXmu-devel

紅色標記的兩個包切記不能忘了選上。然後就慢慢等待Cygwin的安裝。安裝完成後生成快捷方式。

2NS2的安裝

下載NS2,第一次啟動Cygwin會在安裝的目錄下生成一個以你的計算機使用者名稱名稱命名的資料夾例如我Cygwin安裝在D盤計算機使用者名稱為yyx,會產生一個D\cygwin\home\yyx的檔案,如果你的使用者名稱是Administrator則是D\cygwin\home\Administrator

NS2壓縮包拷貝到D\cygwin\home\yyx檔案目錄下,執行Cygwin,進入該目錄(開啟後預設應該就是在該目錄下),輸入

tar xvfz ns-allinone-2.28.tar.gz,解壓NS2壓縮包。解壓完成後一定注意有兩個檔案要先改了再安裝,切記!切記!:

(1) D:\cygwin\yyx\ns-allinone-2.28\nam-1.11\agent.h檔案的第73行的NULL改為0,不然不能生成nam.exe。其實這個也可以在安裝完成之後再改,但更麻煩些,方法後面有介紹。

(2) D:\cygwin\yyx\ns-allinone-2.28\tk8.4.5\generic\tkBind.c檔案中的588行後加入:

#ifdef GenericEvent

/*GenericEvent*/  0,

#endif

我最開始就沒改第二步,結果最後在執行ns example2.tcl的時候出現$ nam: [code omitted because of length]錯誤,如下圖1

結果網上一搜發現說是由於nam呼叫的tk元件和xproto-7.0.13不相容導致的(xproto-7.0.13 新添加了GenericEvent)反正我不懂,沒辦法也只能改過之後再重灌了一遍。所以這裡一定要記住先改再安裝

       改好之後,在Cygwin裡cd ns-allinone-2.28,然後再輸入  ./install進行安裝。然後就是慢慢等待安裝的結束。

       安裝結束之後就是設定PATH。這一點網上也有很多人說了,但最重要的是不要在網上直接複製貼上進 .bashrc檔案,因為直接複製有可能是因為作業系統字型的原因也有可能是複製的內容裡多了某些空格或者換行符等東西而導致出錯,所以還是老老實實的下載個ultraedit編輯器,在該編輯器裡將以下幾行內容一個字一個字的敲進 .bashrvc檔案比較穩妥,這兒的yyx是我的檔名稱,記得改為你自己的檔名稱。我最開始就是複製貼上,花了一天多的時間老是在裝好之後不管是輸入startxwin.bat還是直接輸入ns都顯示找不到command。當我後來重灌的時候自己一個字一個字的敲進去之後,再輸入ns就會出現%符號了,當時就狂喜啊(不過當時輸入startxwin.bat還是顯示找不到該command,具體原因後面有介紹)。

export NS_HOME=/home/yyx/ns-allinone-2.28

export PATH=$NS_HOME/bin:$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$PATH

export LD_LIBRARY_PATH=$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$NS_HOME/otcl-1.9:$NS_HOME/lib:LD_LIBRARY_PATH

export TCL_LIBRARY=$NS_HOME/tcl8.4.5/library

    改好 .bashrc檔案之後,正如我前面所說當我輸入ns按回車之後出現%符號了,但我按那些安裝教程上說的輸入startxwin.bat之後還是出現找不到command,當時就急了,網上找了很多方法,最後在一個地方看有人說試一下輸入srartxin.exe,也有的人說試一下輸入startxwin不加後面的.bat,當我試了下只輸入startxwin之後夢寐以求的那個x視窗終於彈出來了(又一陣狂喜啊!當時就鬱悶為啥所有的教程裡都沒提這一點呢,害得我以為環境變數又設定錯了,到處找原因,雖然最後搞定了但我還是沒明白為什麼要這樣做)如下圖2。

    如果大家都按我上面說的一步一步改好了,那在新彈出來的視窗中輸入

cd ns-allinone-2.28/ns-2.28/ns-tutorial/examples

  ns example2.tcl

之後就應該能看到結果了(下圖3),那表明安裝已經成功了。


所以整個NS2的安裝步驟可以簡化為:解壓→改兩個檔案→安裝→改環境變數→成功!

       我之前就是因為沒有在安裝前改第一個地方的檔案,結果在輸入ns example2.tcl 之後就出現了找不到nsm.exe的情況,在網上找了一下,說是在home/yyx/ns-allinone-2.28/nam-1.11下看是不是有nsm.exe,發現果真沒有,於是需要用make命令生成nam.exe。步驟:首先進入目錄home/yyx/ns-allinone-2.28/nam-1.11,然後執行命令( ./configure && make && makeinstall )後會在 home/yyx/ns-allinone-2.28/nam-1.11目錄下生成一個nam.exe檔案,但我發現我執行該命令之後還是沒產生nam.exe檔案,而出現了以下錯誤圖4:


仔細一看這個錯誤說明,正是和我前面所說的沒有把D:\cygwin\yyx\ns-allinone-2.28\nam-1.11\agent.h檔案的第73行的NULL改為0,於是回到該目錄下,找到該檔案,改完之後再按前面的步驟執行就產生了nam.exe檔案了(這時雖然也顯示有錯誤產生,但這個錯誤對最終結果沒有影響)把nam.exe檔案拷貝到 home/sun/ns-allinone-2.28/bin 目錄下。這次就有了nam了。其實只要最初就改好檔案就不會出現這種問題了,安裝的時候就直接自動產生nam.exe檔案了。

解決這個問題之後如果安裝之前也把我前面說的第二個檔案改過了,那就能執行成功了,如果沒有改那就會出現了這樣的錯誤圖5:


這種情況下又只能改過檔案之後再重新裝了一下NS2了。所以大家一定要按我先前說的步驟去做,不能保證每個人都成功,但至少我成功了,哈哈!