總得證明我肚子有點東西

Red Hat 9.0 + NS-2.29 安裝

這兩天跟 ywchen 要了一台電腦,
主要是希望可以把 NIST 發布的 WiMAX module 成功安裝。

之所以要重新用一台電腦是希望可以在 Linux 的環境下試試看,
因為在之前的 Windows + Cygwin + NS-2.29 都一直 make 不過,
即使用 Patch 檔更新過也沒有成功,
mailing list 上面的人是說他們使用 Linux 沒有遇到問題,
出現的錯誤訊息主要如下:

diffusion3/filter_core/filter_core.o(.text$_ZN13NeighborEntryC1Ei+0x0):filte
r_core.cc: multiple definition of `NeighborEntry::NeighborEntry[in-charge](int)’

wimax/neighborentry.o(.text+0x5e):neighborentry.cc : first defined here

collect2: ld returned 1 exit status

make: *** [ns] Error 1

因此 Try and error 的浩大工程重新舉行。Windows + Cygwin + NS2 的安裝已經有很詳細的說明,可以參考這裡

我主要紀錄的是 Red Hat 9.0 + NS-2.29。

1. 成功安裝Red Hat 9.0。
這個應該對大部分人都不是問題,有問題的時候可以參考Linux 之神鳥哥 的說明。
有一點要注意的是,在勾選安裝套件的時候,記得一定要把 X視窗環境開發 勾起來。

2.下載 NS2 套件。
現在最新的版本是 NS-2.31,但是我用的習慣的是 NS-2.29。
總之抓一個習慣的版本就可以。
我下載的是 NS-allinone-2.29.tar.gz,有裝過的 NS-2 都知道這就是所謂的懶人包。
如果想要一個一個套件裝,可以參考官網說明

3.解壓縮安裝
下載的檔案我放在 /home/ns2 這個目錄底下,
# tar -zxvf ns-allinone-2.29.tar.gz
在NS-2.29好像有一個bug,需要修改ns-allinone-2.29/nam-1.11/agent.h。
在第73行需要把 NULL 改成 0,才可以順利做出 nam 的執行檔。
修改過後就可以安裝:
# ./install
順利的話,等大概十到十五分鐘就可以安裝完成。
但是偏偏順利的機率很低,我第一次安裝的時候,make出現以下錯誤訊息:

********************************錯誤訊息分隔線***********************************************
{standard input}: Assembler messages:
{standard input}:13: Error: symbol `q’ is already defined
{standard input}:25: Error: symbol `q’ is already defined
{standard input}:31: Error: symbol `q’ is already defined
{standard input}:37: Error: symbol `p’ is already defined
{standard input}:79: Error: symbol `dy’ is already defined
{standard input}:85: Error: symbol `dx’ is already defined
make: *** [tk3d.o] error 1
tk8.4.13 make failed! Exiting …
For problems with Tcl/Tk see http://www.scriptics.com
********************************錯誤訊息分隔線***********************************************

上網辜狗跟去mailing list看,也很多人遇到這個問題,但是好像都沒有找到答案。
後來根據多篇文章猜測可能是 Tcl/Tk 的相關套件沒有安裝,
因此把 Red Hat 9.0 的光碟放進去,勾選 X視窗環境開發,安裝完相關套件以後。
安裝 NS2 的過程就相當順利了!!

4.修改環境變數
在/目錄下,
 # vi .bashrc

*****************************.bashrc分隔線***************************************************
PATH=$PATH:/home/ns2/ns-allinone-2.29/bin:/home/ns2/ns-allinone-2.29/tcl8.4.11/unix:/home/ns2/ns-allinone-2.29/tk8.4.11/unix;
export PATH

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ns2/ns-allinone-2.29/otcl-1.11:/home/ns2/ns-allinone-2.29/lib;
export LD_LIBRARY_PATH

TCL_LIBRARY=$TCL_LIBRARY:/home/ns2/ns-allinone-2.29/tcl8.4.11/library;
export TCL_LIBRARY

NS_ROOT=/home/ns2/ns-allinone-2.29;
export NS_ROOT
*****************************.bashrc分隔線***************************************************

紅色的部份就是根據自己ns2所在的絕對路徑修改,這樣才能生效。

經過以上幾步後,應該就可以順利的跑.tcl。
雖然學長的名言是:
if ( 0 == USE_NS2 || 0 == ABOUT_ROUTING )
  return SUCCESS_GRADUATE;
else
  return FAIL_GRADUATE;

不過論文現在的模擬真的很頭大,NS2是以備不時之需囉。

參考文件:
1.http://blog.edu.cn/user1/13760/archives/2007/1635000.shtml

--------
修改:
11.24 加入在Cygwin中的錯誤訊息

Red Hat 9.0 + NS-2.29 安裝 有 “ 5 則迴響 ”

回覆給nycrenee 取消回覆