准備工作:Ubuntu 12.10已經成功安裝+下載NS2安裝文件,我這裡是ns-allinone-2.33.tar,另外准備兩個補丁:tk-8.4-lastevent.patch和tk-8.4.18-tkBind.patch
tk-8.4-lastevent.patch和tk-8.4.18-tkBind.patch下載地址:
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2013年資料/5月/9日/NS2.33在Ubuntu12.10的完整安裝過程及相關問題
或者
百度雲盤下載:http://pan.baidu.com/share/link?shareid=552203&uk=487907638
相關閱讀:Ubuntu 11.10下安裝NS2.35 http://www.linuxidc.com/Linux/2012-03/55990.htm
第一步:將ns2的壓縮包ns-allinone-2.33.tar.gz拷貝到桌面,右鍵解壓到桌面,將解壓後的文件夾復制到准備安裝的位置,
例如我的件夾home/wl(wl是登錄用戶名)下新建文件夾program,將ns2的文件夾粘帖到home/wl/program下。
第二步:在root的用戶名下或admin用戶下,下載並安裝ns-2.33安裝時需要的系統包,具體如下:
首先,在終端裡輸入apt-get install build-essential 進行下載安裝,這一步是為了gcc and some essential 的安裝;
接著,在終端裡輸入apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev 進行下載安裝,這一步是為了tcl and tk 的安裝;
最後,在終端裡輸入apt-get install libxmu-dev 進行下載安裝,這一步是為了nam的安裝。
第三步:檢查gcc版本,現在系統自動安裝的版本一般高於4.0,但是安裝之前仍有必要檢查下,終端命令如下:
終端執行ls /usr/bin/gcc –l或者gcc --rsion或者gcc -v都可以,我的是gcc4.7.2
因為gcc 4.0版本以前是用ld -share來生成共享庫的,但是到了4.0以上的版本,這個命令改為了gcc -share。
所以,若版本高於gcc4.0則需要做如下更改:
cd /home/liu/Program/ns-allinone-2.33//otcl-1.13
do gedit configure.in
將77行,SHLIB_LD="ld -shared" 改為SHLIB_LD="gcc -shared"保存,退出
同時修改configure 第5518行SHLIB_LD="ld -shared"改為SHLIB_LD="gcc -shared"保存退出。
上述修改是終端命令的形式,也可以在視圖下直接打開,前提是開放文件的“read and write"權限。
第四步:由於我的是安裝的ns2.33,據說存在一些問題,所以提前進行了測試並安裝了補丁,具體步驟如下:
(1)運行自帶的實例進行測試: /ns-allinone-2.33/ns-2.33/tcl/ex/simple.tcl
可能的問題:
系統提示如下,
[code omitted because of length]
: no event type or button # or keysym
while executing
"bind Listbox <MouseWheel> {
%W yview scroll [expr {- (%D / 120) * 4}] units
}"
invoked from within
"if {[tk windowingsystem] eq "classic" || [tk windowingsystem] eq "aqua"} {
bind Listbox <MouseWheel> {
%W yview scroll [expr {- (%D)}] units
}
bind Li..."
原因:據說是ns2.33,它的nam調用的tk組件和xproto-7.0.13 不兼容導致的(xproto-7.0.13 新添加了 GenericEvent),所以在安裝ns2之前要先打上補丁。如果不打上補丁的話,後面調用nam時會報錯。
解決方法為:
(1)打上准備的補丁tk-8.4-lastevent.patch
把這個文件移動至ns目錄下tk8.4.18下
$ cd/home/liu/Program/ns-allinone-2.33/tk8.4.18
$ patch –p1<tk-8.4-lastevent.patch
(2)打上准備的補丁tk-8.4.18-tkBind.patch
將文件tk-8.4.18-tkBind.patch移至ns-allinone-2.33目錄下,並運行如下命令:
$patch -p0 <tk-8.4.18-tkBind.patch