2010年10月14日 星期四

在Linux mint 8 (Ubuntu 9.10)下安裝ns 2.29

.

之前雖然成功的在Fedora Core 5下成功的安裝了ns 2.29和BittorrentSim
但是我常用的VM還是LinuxMint 8

若要同時開兩個VM,這不是個辦法
真要解決問題,還是得在Linux mint 8 (Ubuntu 9.10)下將ns 2.29裝起來才行

你會看到這篇文章的出現,就代表我已經成功的裝了起來

1.下載ns-allinone-2.29.3.tar.gz並解開

tar zxvf ns-allinone-2.29.3.tar.gz


2.在.bashrc下設定一些變數,設定完後logout,再login一次,讓變數發生作用
我自己的變數設定如下:


NSPATH229=$HOME/ns-allinone-2.29

PATH=$NSPATH229/bin:$NSPATH229/tcl8.4.11/unix:$NSPATH229/tk8.4.11/unix:$PATH
LD_LIBRARY_PATH=$NSPATH229/otcl-1.11:$NSPATH229/lib
TCL_LIBRARY=$NSPATH229/tcl8.4.11/library
export NSPATH229 PATH LD_LIBRARY_PATH TCL_LIBRARY


PS:
這裡的變數設定有參考 linux下安裝ns
但為什麼我的變數為NSPATH229而非NSPATH?
因為我之前有安裝過ns2.34,NSPATH已經被用掉了,因此我將原來的NSPATH comment掉,而NSPATH229就留給ns2.29

3.
在ns-allinone-2.29下,執行

grep 'system=MP-RAS-' ***/*/* -n

結果應如下:


將system=MP-RAS-`awk '{print $3}' /etc/.relid'`
'刪除
變成system=MP-RAS-`awk '{print $3}' /etc/.relid`
將所有有多出'的Makefile.in的行改掉,如下圖


4.我在這裡會遇到下面的問題:

undefined reference to `__stack_chk_fail_local'
ld: libotcl.so: hidden symbol `__stack_chk_fail_local' isn't defined
ld: final link failed: Nonrepresentable section on output
make: *** [libotcl.so] Error 1
otcl-1.11 make failed! Exiting ...

解法是參考這裡:NS-2 problem llType


簡單說,先安裝一些套件:

sudo apt-get install libx11-dev libxmu-dev libxmu-headers libxt-dev libtool g++-4.1

再下載tk-8.4-lastevent.patch (點我下載)
然後進入ns-allinone-2.29/tk-8.4.11/下

cd ns-allinone-2.29.3/tk-8.4.11/

執行:

patch -p0 < tk-8.4-lastevent.patch


再修改下列目錄中的"Makefile.in",將@CC@改成gcc-4.1,@CPP@改成g++-4.1

otcl-1.11/, line 7 : CC = gcc-4.1
tclcl-1.17/, line 40 : CC = gcc-4.1
tclcl-1.17/, line 41 : CPP = g++-4.1
ns-2.29/ , line 36 : CC = gcc-4.1
ns-2.29/ , line 37 : CPP = g++-4.1
nam-1.11/, line 44 : CC = gcc-4.1
nam-1.11/, line 45 : CPP = g++-4.1


若你在這之前有執行ns-allinone-2.29下的./install過,記得到ns-allinone-2.29/otcl-1.11/中執行make clean
(原文有說還要砍掉"Makefile",但我實驗的結果是,make clean即會砍掉"Makefile")

到這裡,我執行完ns-allinone-2.29下的./install
ns2.29就裝起來了

可喜可賀

.

2 則留言:

Unknown 提到...

版主 您好:

首先先感謝版主的回應,我在照著這篇文章的步驟執行的時候出現了一些問題,在文章的最後面要修改
再修改下列目錄中的"Makefile.in",將@CC@改成gcc-4.1,@CPP@改成g++-4.1

otcl-1.11/, line 7 : CC = gcc-4.1
tclcl-1.17/, line 40 : CC = gcc-4.1
tclcl-1.17/, line 41 : CPP = g++-4.1
ns-2.29/ , line 36 : CC = gcc-4.1
ns-2.29/ , line 37 : CPP = g++-4.1
nam-1.11/, line 44 : CC = gcc-4.1
nam-1.11/, line 45 : CPP = g++-4.1

因為這部份我不知道版主所說的Makefile.in是在哪裡,所以就沒修改,就直接執行install,但是install後出現了以下的錯誤,我只copy最後的部份,
./common/packet.h:258: warning: deprecated conversion from string constant to ?har*??./common/packet.h:261: warning: deprecated conversion from string constant to ?har*??./common/packet.h:264: warning: deprecated conversion from string constant to ?har*??./common/packet.h:266: warning: deprecated conversion from string constant to ?har*??In file included from trace/trace.cc:42:
./sctp/sctp.h: At global scope:
./sctp/sctp.h:705: error: extra qualification ?ctpAgent::??on member ?umpSendBuffer??trace/trace.cc:185: warning: deprecated conversion from string constant to ?har*??trace/trace.cc:185: warning: deprecated conversion from string constant to ?har*??trace/trace.cc:185: warning: deprecated conversion from string constant to ?har*??trace/trace.cc:185: warning: deprecated conversion from string constant to ?har*??trace/trace.cc:185: warning: deprecated conversion from string constant to ?har*??make: *** [trace/trace.o] Error 1
Ns make failed!
See http://www.isi.edu/nsnam/ns/ns-problems.html for problems

不知道版主有沒有遇到這樣的錯誤,謝謝。

我安裝的版本是:
os : ubuntu 8
ns : 2.29

Unknown 提到...

版主 您好:
對於底下的問題我已經有改好了,
otcl-1.11/, line 7 : CC = gcc-4.1
tclcl-1.17/, line 40 : CC = gcc-4.1
tclcl-1.17/, line 41 : CPP = g++-4.1
ns-2.29/ , line 36 : CC = gcc-4.1
ns-2.29/ , line 37 : CPP = g++-4.1
nam-1.11/, line 44 : CC = gcc-4.1
nam-1.11/, line 45 : CPP = g++-4.1

但是在執行install的時候,最後面有一個error:
g++-4.1 -c -Wall -DTCP_DELAY_BIND_ALL -DNO_TK -DTCLCL_CLASSINSTVAR -DNDEBUG -DLINUX_TCP_HEADER -DUSE_SHM -DHAVE_LIBTCLCL -DHAVE_TCLCL_H -DHAVE_LIBOTCL1_11 -DHAVE_OTCL_H -DHAVE_LIBTK8_4 -DHAVE_TK_H -DHAVE_LIBTCL8_4 -DHAVE_TCL_H -DHAVE_CONFIG_H -DNS_DIFFUSION -DSMAC_NO_SYNC -DCPP_NAMESPACE=std -DUSE_SINGLE_ADDRESS_SPACE -Drng_test -I. -I/home/hong/ns-allinone-2.29/tclcl-1.17 -I/home/hong/ns-allinone-2.29/otcl-1.11 -I/home/hong/ns-allinone-2.29/include -I/home/hong/ns-allinone-
I./link -I./queue -I./adc -

........

I./apps -I./mac -I./mobile -I./trace -I./routing -I./tools -I./classifier -I./mcast -I./diffusion3/lib/main -I./diffusion3/lib -I./diffusion3/lib/nr -I./diffusion3/ns -I./diffusion3/filter_core -I./asim/ -I./qs -I./diffserv -I./satellite -I./wpan -o trace/trace.o trace/trace.cc
./sctp/sctp.h:705: error: extra qualification ‘SctpAgent::’ on member ‘DumpSendBuffer’
make: *** [trace/trace.o] Error 1
Ns make failed!

不知道版主有沒有遇到這樣的問題,謝謝。

安裝的版本:
os : ubuntu 9
ns : 2.29