Ubuntu 10.04下安裝ns2-allinone-2.33

來源:互聯網
上載者:User

<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
A:link { so-language: zxx }
-->

最近做無線感測網路定位方面的項目,硬體裝置雖然有了,但是還沒做到這一步,所以只能模擬了,於是老闆要我用NS2做模擬,於是我準備在Vista下面安裝的,裝了Cygwin虛擬機器,但是就是產生不了startxwin.bat。一直都成功不了,於是我一氣之下安裝了Ubuntu10.04,準備在Linux下裝NS2,看了很多網上教安裝的教程,覺得都寫得不全,導致我幾次都裝失敗了,今天下午在再一次重裝後,終於成功了,下面總結一下我安裝的步驟。
在終端裡輸入如下語句,安裝一些編譯必備的包。
$
sudo apt-get install build-essential
$ sudo apt-get install tcl8.4
tcl8.4-dev tk8.4 tk8.4-dev
$ sduo apt-get install libxmu-dev
libxmu-headers
有的文章說要移除gcc,因為高版本的gcc對安裝有影響,其實是可以不用移除的,後面會有解決方案的。

然後下載ns2-allinone-2.33.tar.gz壓縮包,我的是放在home/jyq(自己的檔案夾)下,輸入如下命令解壓:
$
tar xvfz ns-allinone-2.33.tar.gz
然後進入ns-allinone-2.33檔案夾輸入$
cd ./install安裝,差不多等幾分鐘吧,然後會出現一個錯誤提示:
make:
*** [libotcl.so] 錯誤
1
otcl-1.13
make failed! Exiting ...
See
http://www.isi.edu/nsnam/ns/ns-problems.html
for problems
這是因為gcc版本高了,gcc
4.0版本以前是用ld
-share來產生共用庫的,但是到了4.0以上的版本,這個命令改為了gcc
-share。在終端裡輸入gcc
-v查看,我的版本是gcc
version 4.4.1。
然後進入$
cd /ns-allinone-2.33/otcl-1.13,然後$
sudo gedit configure.in
把77行的SHLIB_LD="ld
-shared",改為SHLIB_LD="gcc
-shared",儲存退出。然後
$
sudo gedit configure
在5518行找,把SHLIB_LD="ld
-shared"改為SHLIB_LD="gcc
-shared",儲存退出。
cd回到目錄ns-allinone-2.33下,重新運行
sudo
./install
順利完成安裝。最後出來提示:
Please
put
/home/jyq/ns-allinone-2.33/bin:/home/jyq/ns-allinone2.33/tcl8.4.18/unix:/home/jyq/ns-allinone-2.33/tk8.4.18/unix
into
your PATH environment; so that you'll be able to run
itm/tclsh/wish/xgraph.
IMPORTANT
NOTICES:
(1)
You MUST put
/home/jyq/ns-allinone-2.33/otcl-1.13,
/home/jyq/ns-allinone-2.34/lib,
into your LD_LIBRARY_PATH
environment variable.
If it complains about X libraries, add path
to your X libraries
into LD_LIBRARY_PATH.
If you are using csh,
you can set it like:
setenv LD_LIBRARY_PATH <paths>
If
you are using sh, you can set it like:
export
LD_LIBRARY_PATH=<paths>
(2)
You MUST put
/home/jyq/ns-allinone-2.33/tcl8.4.18/library
into your
TCL_LIBRARY environmental
variable. Otherwise ns/nam will complain
during startup.
 
  After these steps, you can now run the ns validation suite
with
cd ns-2.33; ./validate
 
  For trouble shooting, please first read ns problems
page
http://www.isi.edu/nsnam/ns/ns-problems.html. Also search the
ns mailing list archive
for related
posts.
這個是因為沒有配置環境變數,然後cd進入/home/jyq/下,$
sudo gedit
.bashrc。
在檔案末尾加入:
PATH="$PATH:/home/jyq/ns-allinone-2.33/bin:/usr/ns-allinone-2.33/tcl8.4.18/unix:/home/jyq/ns-allinone-2.33/tk8.4.18/unix"
LD_LIBRARY_PATH="/home/jyq/ns-allinone-2.33/otcl-1.13:/usr/ns-allinone-2.33/lib"
TCL_LIBRARY="$TCL_LIBRARY:/home/jyq/ns-allinone-2.33/tcl8.4.18/library"
儲存退出。然後重新安裝
$
sudo
./install。
到這一步,應該可以說完成了,在終端輸入ns,出現%就證明安裝成功。
但是運行nam時,會出現如下錯誤:
[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),所以我們要打上補丁。有的教程說寫個patch,然後運行,我覺得這個方法沒有那麼好,至少對於我這種菜鳥是如此,直接在tk-8.4.14/generic/tbBind.c的第588行添加如下代碼:
#ifdef
GenericEvent
    
 0,
#endif
儲存退出。然後在重新安裝一遍。有的機器在這一步應該就可以運行了,但是我的沒有,輸入nam還是運行不了,還是出現nam錯誤,我又查了一下,原來是ns.exe檔案和nam.exe檔案沒放到/usr/local/bin/下,然後在開啟終端輸入
$
sudo cp -i nam /usr/local/bin/
$ sudo cp -i ns
/usr/local/bin/
將ns和nam都copy過來就行。
再次運行ns應該就沒有問題了,至少我的機器沒問題了,然後輸入:
$
ns /ns-allinone-2.33/ns-2.33/tcl/ex/simple.tcl
就會出現一個簡單的nam視窗。就大功告成了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.