1、首先是下载ns-allinone-2.34.tar.gz。去官网或者网上找都有。
2、先更新一下系统。在终端输入:
sudo apt-get update #更新源列表
sudo apt-get upgrade #更新已安装的包
sudo apt-get dist-upgrade #更新软件,升级系统
3、安装几个需要使用的软件包
sudo apt-get install build-essential
sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev #for tcl and tk
sudo apt-get install libxmu-dev libxmu-headers #for nam
4、然后可以进行安装:
sudo cp /home/ww/ns-allinone-2.34.tar.gz /usr #将压缩文件放到安装目录下
cd /usr/
sudo tar -zxvf ns-allinone-2.34.tar.gz
cd ./ns-allinone-2.34
sudo./install
然后看到命令行非常养眼地快速翻滚。在结束时突然报错:
ld -shared-o libotcl.so otcl.o
otcl.o: Infunction `OTclDispatch':
/usr/ns-allinone-2.34/otcl-1.13/otcl.c:495:undefined reference to `__stack_chk_fail_local'
otcl.o: Infunction `Otcl_Init':
/usr/ns-allinone-2.34/otcl-1.13/otcl.c:2284:undefined reference to `__stack_chk_fail_local'
ld:libotcl.so: hidden symbol `__stack_chk_fail_local' isn'tdefined
ld: finallink failed: Nonrepresentable section on output
make: ***[libotcl.so] 错误 1
otcl-1.13make failed! Exiting ...
Seehttp://www.isi.edu/nsnam/ns/ns-problems.html forproblems
错误原因及发现解决办法:
gcc 4.0版本以前是用ld -share来生成共享库的,但是到了4.0以上的版本(我的为gcc version4.4.1),这个命令改为了gcc -share即可
解决过程:
cd /usr/ns-allinone-2.34/otcl-1.13
sudo configure.in
把77行处的
SHLIB_LD="ld-shared"
改为
SHLIB_LD="gcc -shared"
保存退出,然后
sudo configure
把6304行
原来为
SHLIB_LD="ld-shared"
改为
SHLIB_LD="gcc -shared"
保存退出,然后
cd /usr/ns-allinone-2.34
回到目录ns-allinone-2.34下运行
sudo./install
如果正确安装可以看到提示:
----------------------------------------------------------------------------------
5、设置环境变量和善后工作:
用cd进入目录/home/ww(ww是我的用户名),然后
sudo gedit .bashrc
在文件末尾加入:
PATH="$PATH:/usr/ns-allinone-2.34/bin:/usr/ns-allinone-2.34/tcl8.4.18/unix:/usr/ns-allinone-2.34/tk8.4.18/unix"
LD_LIBRARY_PATH="/usr/ns-allinone-2.34/otcl-1.13:/usr/ns-allinone-2.34/lib"
TCL_LIBRARY="$TCL_LIBRARY:/usr/ns-allinone-2.34/tcl8.4.18/library"
保存退出(上述内容在安装结束后的提示中有,见粗体部分)。
6、验证
打开一个新终端,输入ns,如果出现%,则说明安装成功。
也可以进入/usr/ns-allinone-2.34/ns-2.34/,输入./validate验证。
到此。上面的/usr目录记得都要用自己的安装路径替换。