ns2 2.29在linux下安装出现的问题

NS-2.29在Cygwin下面的安装

因为是做多媒体通信(multimedia communication)研究的,主要是从理论和实践两个角度去研究吧。理论方面的侧重于信息论(视频编码等)和网络的理论知识(像tcp/ip协议栈等等,CDMA,信号处理,通信原理之类的),而在工具方面的主要侧重于3大工具,第一,是VC,进行C++语言开发必备的,第二当然是matlab,做科学研究的人没有一个不用matlab的吧,第三就是为了研究通信网络所需要的ns-2。

因为研究的需要,所以需要安装ns-2。为了方便,在windows xp下面进行使用cygwin安装ns-2,基本情况如下转述所说,第一是下载安装cygwin,第二是开始安装ns-allinone-2.29。但是由于我所使用的是bash 3.1.17,跟从官方下载下来的ns-allinone-2.29.2有一些不兼容的地方。出现的问题主要有4个地方,分别是:

1. 在xgraph里面,由于xgraph-12.1中的dialog.c的780行的getline(&lineptr, line)出错, 其原形定义是int getline(tptr, lptr)char  **tptr;char   *lptr;但是由于系统里面定义了getline这个函数,参见/usr/include/sys下面的stdio.h。 所以解决办法是将dialog.c里面的getline函数名称改变,我将其改变为get_line,编译ok。

2. 因为版本8.4.11和 8.4.12 的Tcl 和Tk配置文件和bash-3.1不兼容。所以会产生错误。错误如下:

Tcl-8.4.11 : ./configure: line 7624: syntax error near unexpected token `)' ./configure: line 7624: ` OSF*)'
Tcl-8.4.12 : ./configure: line 7653: syntax error near unexpected token `)' ./configure: line 7653: ` OSF*)'
Tk-8.4.11 : ./configure: line 5963: syntax error near unexpected token `(' ./configure: line 5963: case (ac_space=' '; set | grep ac_space) 2>&1` in'
Tk-8.4.12 : ./configure: line 6067: syntax error near unexpected token `(' ./configure: line 6067: case (ac_space=' '; set | grep ac_space) 2>&1` in'

以及在otcl-1.11里面也会出现错误。第二个大的问题的解决办法是到tcl8.4.11和tk8.4.11以及otcl-1.11目录下面找到configure这个配置文件,然后在configure所在的目录下面执行

cp configure{,.orig} && sed "s/relid'/relid/" configure.orig > configure

修改了上面两个地方之后,再到ns-2.29目录下面运行./install,一切编译通过。