准备工作: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