(ns2)Workstation 16 Pro虚拟机下 Ubuntu10.04+ns2.30 安装

由于毕设原因需要用到ns2.30,奈何网上的教程都有多多少少的错误,整合一下

参考链接:

ubuntu10.4的更新源因过期无法更新的解决方法_苏权的专栏-优快云博客

Ubuntu 10.04 下 安装 NS2.30 (个人修改少数错误)_jian_pku的专栏-优快云博客

如何解决nam [code omitted because of length]错误_阿元老师UJN_新浪博客 (sina.com.cn)


下载ubuntu-10.04.4-desktop-i386.iso

链接:https://pan.baidu.com/s/1k5DNQKJy_St6Ck1dzsFH7w

提取码: whty

安装后在终端输入

sudo gedit /etc/apt/sources.list

打开源列表文件,把里面的地址全删除,然后换上如下的地址(据原博主说,如果是其他版本的ubuntu,把lucid替换为相应版本的代号即可,这里见Ubuntu 各版本号和名称对照_songfulu的博客-优快云博客 )

deb http://old-releases.ubuntu.com/ubuntu lucid main restricted universe multiverse   
deb http://old-releases.ubuntu.com/ubuntu lucid-security main restricted universe multiverse   
deb http://old-releases.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse   
deb http://old-releases.ubuntu.com/ubuntu lucid-proposed main restricted universe multiverse   
deb http://old-releases.ubuntu.com/ubuntu lucid-backports main restricted universe multiverse   
deb-src http://old-releases.ubuntu.com/ubuntu lucid main restricted universe multiverse   
deb-src http://old-releases.ubuntu.com/ubuntu lucid-security main restricted universe multiverse   
deb-src http://old-releases.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse   
deb-src http://old-releases.ubuntu.com/ubuntu lucid-proposed main restricted universe multiverse   
deb-src http://old-releases.ubuntu.com/ubuntu lucid-backports main restricted universe multiverse  

接着我是把sources.list中“ubuntu软件”的所有选项都关掉了,不知道是不是必要的(sources.list的位置是  /etc/apt/sources.list)

然后在终端输入

sudo apt-get update

下载ns-allinone-2.30

链接:https://pan.baidu.com/s/1OG8MMF0bnsxYerwTGobSWQ 

提取码:ccqt 

下载后放到自己想要安装的文件夹下解压,如我安装的路径是  /home/obs/ns2install


安装需要的软件包

build-essential 

tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev 

libxmu-dev 

打开一个终端,依次输入以下命令

sudo -i   #不打这行后边全都加上sudo 也行
apt-get update    #更新源列表
apt-get upgrade   #更新已安装的包
apt-get install build-essential    
apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev
apt-get install libxmu-dev

对可能出现的错误处理

(1)修改 /home/obs/ns2/ns-allinone-2.30/otcl-1.12/configure

找到

;; 

Linux*) 

SHLIB_CFLAGS="-fpic"

SHLIB_LD="ld-shared"   →   SHLIB_LD="gcc-shared

SHLIB_SUFFIX=".so"

DL_LIBS="-ldl"

SHLD_FLAGS=""

(2) 更改gcc版本

*******************************************************原作者解决方法开始************************************************************

由于gcc版本过高引起的编译问题 gcc-4.4  --> gcc-4.3

sudo apt-get install gcc-4.3

安装了之后,系统之中就存在两个GCC版本4.4和4.3,可以通过ls命令查看: 

ls /usr/bin/gcc*   

得到

/usr/bin/gcc /usr/bin/gcc-4.3 /usr/bin/gcc-4.4 /usr/bin/gccbug-4.3

但是这时系统默认的GCC还是4.4版的,可以通过

gcc -v

查看版本号 

设置GCC4.3和GCC4.4的可选项,在终端输入以下命令 

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.3 30  

现在设置GCC的默认版本,输入下面命令: 

sudoupdate-alternatives --config gcc 

得到的结果: 

There are 2choices for the alternative gcc (providing /usr/bin/gcc). 

Selection   Path              Priority   Status 

------------------------------------------------------------

* 0            /usr/bin/gcc-4.4   40       auto mode 

  1           /usr/bin/gcc-4.3   30        manual mode 

  2           /usr/bin/gcc-4.4   40        manual mode 

然后输入“1”,再用gcc -v查看一下gcc的版本,已经变成4.3的了~~~~ 

同样对于g++也可以使用同样的方法从4.4高版本切换到4.3低版本。。。

*******************************************************原作者解决方法结束************************************************************

*******************************************************另一个作者的解决方法开始************************************************************

由于我按照上述步骤装了gcc-4.3的不行,又装了gcc-4.1的仍然不行,于是就干脆进到tclcl-1.18文件夹下查找原因,最终发现的确因为是编译器版本过高引起的,但是是由于g++版本过高,而不是gcc,解决步骤如下:

sudo apt-get install g++-4.1
ls /usr/bin/g++*

得到结果:

/usr/bin/g++  /usr/bin/g++-4.1  /usr/bin/g++-4.4

update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 40
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.1 30
sudo update-alternatives --config g++

得到结果:
  Selection    Path              Priority   Status
------------------------------------------------------------
* 0            /usr/bin/g++-4.4   40        auto mode
  1            /usr/bin/g++-4.1   30        manual mode
  2            /usr/bin/g++-4.4   40        manual mode
选择1即可

*******************************************************另一个作者的解决方法结束************************************************************

在第二个解决方案里我还安装了gcc-4.1,并按照第一个解决方案的方法改了优先级。即最后使用的gcc版本为4.1,g++版本也为4.1


安装ns2.30
 

cd /home/obs/ns2install/ns-allinone-2.30 #用你自己的路径
sudo ./install 

等待安装完成后会看到修改环境变量的提示: 

IMPORTANT NOTICES: 

(1) You MUST put /home/nuaa/Soft/ns2/ns-allinone-2.30/tcl8.4.13/otcl-1.12,/home/nuaa/Soft/ns2/ns-allinone-2.30/tcl8.4.13/lib

   into your LD_LIBRARY_PATH environment variable. 

    Ifit complains about X libraries, add path to your X libraries 

   into LD_LIBRARY_PATH. 

   If you are using csh, you can set it like: 

       setenv LD_LIBRARY_PATH <paths> 

   If you are using sh, you can set it like: 

       export LD_LIBRARY_PATH=<paths> 

(2) You MUST put /home/nuaa/Soft/ns2/ns-allinone-2.30/tcl8.4.13/libraryinto your TCL_LIBRARY environmental 

   variable. Otherwise ns/nam will complain during startup. 

After these steps, you can now run the nsvalidation suite with 

cd ns-2.30; ./validate 

For trouble shooting, please first read nsproblems page 

http://www.isi.edu/nsnam/ns/ns-problems.html.Also search the ns mailing list archive 

for related posts . 

不用管他,关闭终端,重新打开一个终端,输入以下指令修改bash配置文件.bashrc: 

sudo gedit .bashrc 

在文件最后加上: (记得修改为自己的路径)

PATH="$PATH:/home/obs/ns2install/ns-allinone-2.30/bin:/home/obs/ns2install/ns-allinone-2.30/tcl8.4.13/unix:/home/obs/ns2install/ns-allinone-2.30/tcl8.4.13/unix"

LD_LIBRARY_PATH="/home/obs/ns2install/ns-allinone-2.30/tcl8.4.13/otcl-1.12:/home/obs/ns2install/ns-allinone-2.30/tcl8.4.13/lib"

TCL_LIBRARY="$TCL_LIBRARY:/home/obs/ns2install/ns-allinone-2.30/tcl8.4.13/library"

保存后退出,关闭终端,ns2.30就安装完成了


安装验证

安装结束后的提示中也告诉我们如何验证是否正确安装: (记得先到ns-allinone-2.30文件夹)

cd ns-2.30
./validate 

所用时间较长,可以打开一个新终端进行试运行: 

输入ns,如果显示一个%则说明已正确安装


安装nam

安装后nam是不能运行的,需要打上补丁。如果不打上补丁的话,后面调用nam时会报错,系统提示如下:

[code omitted because of length]
: no event type or button # or keysym
    while executing
"bind Listbox {
%W yview scroll [expr {- (%D / 120) * 4}] units
}"
    invoked from within
"if {[tk windowingsystem] eq "classic" || [tk windowingsystem] eq "aqua"} {
bind Listbox {
%W yview scroll [expr {- (%D)}] units
}
bind Li..."

解决方法:225999 – tcl/tk-8.4* broken if built with x11-proto/xproto-7.0.13 (gentoo.org)

打开链接后点击Diff,按照

修改 /ns-allinone-2.30/tk8.4.13/generic/tkBind.c

ns2.30就安装完成了

运行simple.tcl

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值