最近做一个流量控制的算法,想先用ns2仿真。于是首先要进行ns2的安装。费了九牛二虎之力终于安上了,把这个过程写下来,希望对别人有帮助,也便于自己以后查看。
一开始是打算在windows下采用Cgywin来进行安装的,实验室的师兄说这个玩意不好,老是出问题。于是我决定用虚拟机做。以前在爱立信实习的时候用vbox,虚拟机的源文件什
么的都有,就直接安装用了。我采用的NS版本是2.32的,很容易从sourceforge上面下载。因为采用的是虚拟机,首先建立和主机xp的共享文件夹。其步骤如下:
1. 安装增强功能包(Guest Additions)
安装好Ubuntu 8.10后,运行Ubuntu并登录。然后在VirtualBox的菜单里选择"设备(Devices)" -> "安装增强功能包(Install Guest Additions)"。
你会发现在Ubuntu桌面上多出一个光盘图标,这张光盘默认被自动加载到了文件夹/media/cdom0。进入命令行终端,输入:
cd /media/cdom0
sudo ./VboxLinuxAdditions.runcdcd
开始安装工具包。安装完毕后会提示要重启Ubuntu。
2. 设置共享文件夹
重启完成后点击"设备(Devices)" -> 共享文件夹(Shared Folders)菜单,添加一个共享文件夹,选项固定和临时是指该文件夹是否是持久的。共享名可以任取一个自己喜欢 的,比如"gongxiang",尽量使用英文名称。
3. 挂载共享文件夹
重新进入虚拟Ubuntu,在命令行终端下输入:
sudo mkdir /mnt/shared
sudo mount -t vboxsf gongxiang /mnt/shared
然后将下来下来的ns2安装包放入gongxiang文件夹里面,这样在ubunt的 /mnt/shared文件夹里面就会出现gongxiang文件夹里面的内容了。
接下来就是对ns2的安装了。可以分如下的步骤
1 对编译环境的设置,尤其是gcc的版本要求还是很严的,我一开始使用了最新的版本,结构出现了问题。
sudo apt-get install gcc-4.4//安装4.4以上的后面会出现问题
gcc -v//检查一下版本,如果版本比4.4过高的话,证明有几个版本的gcc在你的虚拟机上,这个时候cd到/usr/bin里面找到所有的gcc版本,删除比gcc4.4高的版本,为了保险起见 首先做一个备份,我采用的方法是复制到一个文件夹里面 sudo cp gcc-4.5.5 /home/xiaoman/backup,然后将其删除sudo rm gcc-4.5.5.接下来做一个连接
sudo ln /usr/bin/gcc-4.4 /usr/bin/gcc,这样gcc的版本就变成4.4了。安装完gcc后,还要安装一个软件
sudo apt-get install libxmu-dev libxmu-headers
2 接下来就是进行安装了
(1)进行解压并且执行ns2源文件的自带安装脚本
tar xvfz ns-allinone-2.32
./install
这样就会对ns2进行编译和安装。
(2)这个时候还是有可能出现gcc版本过高的问题,如出现如下的错误
tools/ranvar.cc: In member function ‘virtual double GammaRandomVariable::value()’:
tools/ranvar.cc:219:70: error: cannot call constructor ‘GammaRandomVariable::GammaRandomVariable’ directly
tools/ranvar.cc:219:70: error: for a function-style cast, remove the redundant ‘::GammaRandomVariable’
make: *** [tools/ranvar.o]错误1
Ns make failed!
See http://www.isi.edu/nsnam/ns/ns-problems.html for problems
这个就是gcc高低版本不兼容带来的问题,解决办法是在cd 到源文件所在的地方,在我的虚拟机里面我将其放到/tmp里面,改变成高版本gcc支持的地方
cd /tmp/ns-allinone-2.35/otcl1.13,编辑里面的configure.in文件,sudo gedit configure.in 把77行的SHILD_LD=“ld -shared"改成SHILD_LD="gcc -shared",
然后 sudo gedit configure 将6304处的SHILD_LD=“ld -shared"改成SHILD_LD="gcc -shared"。
接下来继续安装。一般来说这样就能安装到ns的主件额