原创 给ns2在cygwin环境下的安装问题划上句号

2009-12-24 11:38 5492 3 3 分类: MCU/ 嵌入式

   


 


 


   最近在做有关于ns2的仿真,上网查资料的时候,发现网上在cygwin环境下安装ns2出现问题的有不少。我看了一下,觉得真正出现那么多问题的原因主要是对linux下安装软件操作的不熟悉,以及不清楚cygwin环境与实际Linux系统的区别引起的。。。在这里不可能一一说明在Linux安装软件的方法,这里着重讨论在Cygwin环境下安装ns2软件的步骤,和解决出现的问题,给它划上一个完美的句号。


 


    Cygwin是在windows环境下模拟POSIX系统(也就是类UNIX)系统的一个工具。如果你有兴趣看看cygwin安装目录下面的文件,你就会发现在bin文件夹里面有大量的exe文件和dll文件。这样你应该明白了点吧,Cygwin的实现机理是基于win32 api写了一个unix系统库的模拟层,这样就可以使用Linux主机上的交叉编译器来生成可以在windows平台上运行的工具集。但是cygwin做的这个模拟层并不是非常完美,并不是说所有的Linux下的工具都能很好的在这个模拟层中成功转换。所以会有还是存在这样那样的软件包兼容性问题。


 


    所以这里建议如果你真的想完整的使用ns2的各种模块,函数,功能的话,还是装个Linux系统吧,或者虚拟机也行。。。


 


    但是对于比较少接触Linux的人来说,Cygwin确实提供了一个很好的模拟平台。你可以自己配置自己想要的包和软件,不需安装Linux环境中的大量不需要软件,借由模拟平台使用Linux环境下面很好用的编辑环境Vim,Emacs等。。。


 


    所以言归正传,还是说一下出现的安装问题吧。Cygwin的下载可以在http://www.cygwin.com/下载到安装文件,但其实只是个客户端。你可以通过网络直接安装,加入你自己想要的包。安装过程网上都有,这里就不累赘了。


 


    这里需要说明一下装ns2所需要的包,这里特别说一下网上一般列出了两种类型的包XFree86和Xorg-X11的包。其实这两个包都是obsolete的包了,也就是过时的包。安装Cygwin在选择包的时候,一定要把hide obsolete package的勾给去掉,不然你是看不到它们的。另外XFree86的包太旧了,已经被删除了,你其实是下不到的。如果你想安装XFree86只能找早期版本的cygwin了。在高版本的ns2下其实推荐使用的还是Xorg-X11的包。


 


    这里有必要说明一下其实ns2配置安装的时候是还是只支持过期的XFree86和Xorg-X11的包,没有对Cygwin新的X11包做支持。。。所以可能有朋友安装ns2出现找不到xorg-x11-bin问题的时候,其实就是你没有安装Xorg-X11包的的缘故,必须在安装时候去掉hide obsolete package的勾才能安装。这里给出需要打的包列表:


 


gcc
gcc-g++
gnuplot
make
patch
perl
tar
X-startup-scripts
xorg-x11-base
xorg-x11-bin
xorg-x11-devel
xorg-x11-bin-dlls
xorg-x11-bin-lndir
xorg-x11-etc
xorg-x11-fenc
xorg-x11-fnts
xorg-x11-libs-data
xorg-x11-xwin


libxt-devel
libXmu-devel


红色的包也是必须的,作用是作为nam 的依赖包。


 


    NS2的版本有很多,你可以在http://www.isi.edu/nsnam/dist/载到。这里推荐使用allinone系列的包,因为它把依赖的包都给你放在一起了,安装也十分方便,只要执行install脚本就可以了(./install)。


 


    下面我对ns-allinone-2.28这个网上流传最多的包出现的安装问题说明一下。如果使用的是Xorg-X11的包的话,一定要打上面红色的两个包,不然在编译nam工具的时候会出现错误。但是整个安装进程还是正常结束。很多人忽略了看安装完后的说明,导致后面仿真例子的时候出现no such file or directory的错误,原因是nam没有安装成功。其实错误很容易排除,如果你使用cygwin默认的GCC3.4.4版本的编译器, 在编译agent.h文件时会出现错误,不识别NULL,把73行的NULL改为0就好了。但是其实即使你改过来了,但是可能在运行nam的时候还会出现边界错误提示。(其实原因还是Cygwin下编译的nam和Xgraph不兼容导致的,在实际的Linux很少碰到这个问题,我在RHEL5+GCC 4.2.2上没有出现错误。)


 


    解决方法是你只能下载nam-1.0a11a-win32.exe这个文件,然后把它重命名为nam.exe,然后把它放到ns-allinone-2.28/bin下面。这样运行就不会出现问题。但是这个做法并不是很好。


 


    下面是我推荐的安装方法,可以下载安装最新的ns-allinone-2.34。下载地址是current release 2.34。新的包在cygwin下不会出现上面的问题。但是上面提到的红色的包是一定要打的。我在Cygwin+GCC3.4.4下编译无误。但是这个版本不带ns-tutorial,你可以拷贝ns-allinone-2.28中例子运行测试。


 


 


                                                                 2009-12-24


                                                                  beats

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /4 下一条