Linux下安装ns2

article/2025/10/10 2:23:26

最近为了项目需要用到NS2软件用于网络仿真实验,从Windows到Linux折腾了我将近一周的时间。在Windows装了卸、卸了装十几遍还是不成功,最后放弃了,回到了Linux系统,又折腾了两天终于安装+测试成功!(安装其实蛮顺利的,就是./validate的过程中一个bug卡了一天,第6步中会详细介绍!)

1. 安装前准备

下载ns2.35安装包(选择其它版本也OK)

https://nchc.dl.sourceforge.net/project/nsnam/allinone/ns-allinone-2.35/

下载后置于 /home/用户名/Documents目录下,并解压

cd /home/用户名/Documents
tar xvfz ns-allinone-2.35.tar.gz
cd ns-allinone-2.35

这里需要修改一下文件ls.h的内容(关键的一步,否则会报错)

vim ns-2.35/linkstate/ls.h
找到第137行 void eraseAll() { erase(baseMap::begin(), baseMap::end()); }
修改为:void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }
wq保存退出

2. 安装依赖

首先更新一下资源

sudo apt-get update          #更新源列表
sudo apt-get upgrade          #更新已经安装的包
sudo apt-get dist-upgrade     #更新软件,升级系统

接下来安装ns需要的一些工具,这些但是后面安装ns时不可缺少的工具,否则会出错。

sudo apt-get install build-essential autoconf automake
sudo apt-get install tcl8.5-dev tk8.5-dev     #tk(toolkit)是用来做图形用户界面(GUI)的工具,与tcl命令结合可以创建和操作GUI的窗口组件
sudo apt-get install perl xgraph libxt-dev libxmu-dev libx11-dev

3. 安装ns 2.35

cd /home/用户名/Documents/ns-allinone-2.35
./install

如果命令行出现以下界面,说明安装成功!

图中红框内为环境变量信息,后面也需要进行配置。

4. 配置环境变量

sudo gedit ~/.bashrc

 在文件末尾加上以下信息

注意:1.将其中的"ns"更换为自己的用户名。

           2.环境变量的路径信息庆根据自己安装完成后的提示(上图红框)进行检查修改。 

           3.如果环境变量配错的话,会提示“程序“ns”尚未安装,此时应该继续修改环境变量而不是使用sudo apt-get install ns2进行重新安装!

# LD_LIBRARY_PATH
OTCL_LIB=/home/ns/Documents/ns-allinone-2.35/otcl-1.14
NS2_LIB=/home/ns/Documents/ns-allinone-2.35/lib/
USR_Local_LIB=/usr/local/lib/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB:USR_Local_LIB#TCL_LIBRARY
TCL_LIB=/home/ns/Documents/ns-allinone-2.35/tcl8.5.10/
USR_LIB=/usr/lib/
export TCL_LIBRARY=$TCL_LIBRARY:$TCL_LIB:$USR_LIB#PATH
#XGPATH=/home/ns/Documents/ns-allinone-2.35/bin:/home/ns/Documents/ns-allinone-2.35/tcl8.5.10/unix:/home/ns/Documents/ns-allinone-2.35/tk8.5.10/unix
XGPATH=/home/ns/Documents/ns-allinone-2.35/xgraph-12.2:/home/ns/Documents/ns-allinone-2.35/bin:/home/ns/Documents/ns-allinone-2.35/tcl8.5.10/unix:/home/ns/Documents/ns-allinone-2.35/tk8.5.10/unix
NS=/home/ns/Documents/ns-allinone-2.35/ns-2.35/ns
NAM=/home/ns/Documents/ns-allinone-2.35/nam-1.15/nam
export PATH=$PATH:$XGPATH:$NS:$NAM

保存退出后, 执行 以下命令更新环境变量。

source ~/.bashrc

5. 测试

在 /home/用户名/Documents/ns-allinone-2.35/ns-2.35/ 路径下执行命令:

 ./validate

时间很长(由网速决定,正常情况下大约半个小时),耐心等待,如果出现以下界面说明安装是没有任何问题的。

然后重启Terminal,输入ns,如果出现%,说明ns2安装成功!然后可以运行一个实例查看效果。

cd /home/用户名/Documents/ns-allinone-2.35/ns-2.35/tcl/ex/
ns simple.tcl

若弹出GUI界面,代表正确安装。 

 6. Can't locate getopts.pl in @INC (@INC contains: /etc/perl xxxx) 错误解析

如果你能完全按照以上流程走完,那么恭喜你没有踩坑!

我在./validate时遇到了一个错误

Can't locate getopts.pl in @INC (@INC contains: /etc/perl xxxx) 

1. 错误原因分析

在有些早期的perl的脚本中,会有这样一句话

require 'getopts.pl';

可是在程序的文件夹下没有这个脚本,并且运行脚本会报错

Can't locate getopts.pl in @INC

 2. 解决思路

参考别人的文章提到一下两个解决方案:

1)找到报错脚本,只需要将脚本添加一句话

use Getopt::Std;

然后将对应的出错的perl脚本中的函数方法Getopt改为getopts就可以了。

2)这个是参考网上的方法,安装一个能兼容perl4的包

cpan Perl4::CoreLibs

但是,很遗憾,两个方法我都没成功,不知道为什么第二个很多人安装不成功 。

以下是我的终极解决办法

1)下载一个perl4的包,地址如下

http://search.cpan.org/CPAN/authors/id/Z/ZE/ZEFRAM/Perl4-CoreLibs-0.004.tar.gz

然后进行解压(在任意目录都行,反正后面会删除),可以看到下面的lib目录。
2)然后,在/usr/lib目录中创建了一个新文件夹,并命名为libperl4-corelibs-perl,因为这似乎是标准的。

检查一下确保没有一个具有该名称的目录。

$ stat /usr/lib/libperl4-corelibs-perl
stat: cannot stat '/usr/lib/libperl4-corelibs-perl': No such file or directory

然后创建目录。

mkdir /usr/lib/libperl4-corelibs-perl

3)接下来将所有*.pl个文件复制到此目录中。

可以使用命令进行批量操作:

find ./lib -type f -name "*.pl" -print0 | xargs -I'{}' -0 \
bash -c 'new_dir=/usr/lib/libperl4-corelibs-perl/; chmod +x {}; \
echo "Moving {}"; sudo mv {} ${new_dir} && echo -e "success\n" || \
echo -e "failure\n"' | tee moving_day.log

如果输出为success表示操作成功,否则失败。 

如果要查看所有内容已成功复制,请运行以下命令:

find ./lib -type f -name "*.pl" -print0 | xargs -I'{}' -0 \
bash -c 'new_dir=/usr/lib/libperl4-corelibs-perl/; chmod +x {}; \
mv {} ${new_dir}' 

4)可以将该路径写入到环境变量中

$ echo -e "\n\n## allow Perl to use the files in Perl4::CoreLibs" >> $HOME/.bashrc$ echo -e "export PERLLIB=\"/usr/lib/libperl4_corelibs_perl:$PERLLIB\"" >> $HOME/.bashrc$ source .bashrc

这是通过命令行写入的方式,同样也可以像前面一样打开~/.bashrc文件,然后在末尾添加。得到的结果如下图:

此时,再运行此命令,然后发现错误依然存在,

 (@INC contains: /home/zhh/SSPACE2.0/dotlib/ /usr/local/lib/perl5/site_perl/5.16.3/x86_64-linux /usr/local/lib/perl5/site_perl/5.16.3 /usr/local/lib/perl5/5.16.3/x86_64-linux /usr/local/lib/perl5/5.16.3 .) 

 并且后面跟了很多路径,说明这些路径中同样需要getopts.pl文件,那我们只需要将该文件copy到所有路径下(有些路径是软连接,无法复制,直接跳过就行)即可。

最后,再./validate一遍,欧皇附体!


http://chatgpt.dhexx.cn/article/tYtZem7S.shtml

相关文章

企业微信第三方扫码登录

为什么写这个文章 公司后台突然需要扫码登录,网上的企业微信扫码都是基于自建应用的扫码登录,对第三方的扫码并没有多加介绍 概述 企业微信的管理员和成员,可通过单点登录机制,登录到第三方网站。第三方可通过接口,…

微信第三方登录有两种登录方式, 1. 微信开放平台登录 2. 微信公众平台授权登录?

https://www.v2ex.com/amp/t/390333 微信开放平台登录与微信公众平台授权登录区别在哪? 2017-09-13 12:05:41 08:00 xoxo419 微信第三方登录有两种登录方式, 1. 微信开放平台登录 2. 微信公众平台授权登录? 问: 两者区别在哪? 壹号店 http://m.yhd.com 微信第三方登录属…

Android APP微信第三方登录踩坑 - 微信开放平台修改应用包名后微信第三方登录失败

在微信开放平台注册移动应用,才能在APP里实现「微信登录」和「微信支付」。 近期因为业务需要,需要修改应用的包名,因此在微信开发平台重新提交了应用「基本信息」修改申请,顺便吐槽下,现在微信开发平台对应用审核真是…

微信第三方登录redirect_uri 参数错误

微信第三方登录 先说解决方案:redirect_uri 参数错误 在开放平台设置好回调地址,例如地址是 www.niezhiliang.com 那么在生成二维码的时候回调只能写该域名下的地址 在申请二维码页面回调地址(你的redirect_uri) 还必须加上http或者https,…

微信第三方登录接口

随着手机微信的崛起,腾讯发布的微信联登确实很诱惑pc端的伙伴们,现在就说说在pc端用微信扫一扫实现微信第三方登陆的方式。 第一步:获取AppID AppSecret(不做解释,自己去微信公众平台申请) 第二步:生成扫描二维码&…

微信 第三方登录

转自:http://www.cnblogs.com/linjunjie/p/6378166.html#3902595 从http://www.cnblogs.com/v-weiwang/p/5732423.html 申请开发者账号之内的就不累赘了,网上一大堆: 说下需求,一个网页要在三类容器运行,公司app&#…

微信第三方登录

微信第三方登录 步骤: 1.申请你的AppID 请到微信开放平台https://open.weixin.qq.com/注册成为开发者,然后创建应用并提交审核,只有审核通过的应用才能进行开发。 2.下载SDK及API文档 Android Studio环境下: 在build.gradle文件…

流程图了解微信第三方登录

1.首先是,浏览器显示微信登录 2.用户扫描,发送请求到微信服务器,前端也会发送一个请求到自己的后台服务器,后台服务器提供微信服务器获取第三方验证授权地址,携带回调路径 3.微信服务器验证成功,返回code…

Oracle官网下载JDK

进入Oracle官网:https://www.oracle.com/index.html 1、选择support(支持)software Download 2、选择 java 3、选择jdk 4、拉到底选择java archive(档案文件) 5、选择要下载的版本

解决JDK官网下载龟速的问题

在JDK的官网下载JDK时还需要登录Oracle 且下载的时候那速度相当缓慢 可以使用华为的镜像下载,超快的 下载仓库地址:x​​​​​​​ Index of java-local/jdk

如何在官网下载java JDK

1.打开Oracle官网,准备下载java JDK (下载时需要使用注册用户登陆,可以免费注册) 官网地址:http://www.oracle.com/ 登录Oracle账号 选择适合自己的JDK版本 选择适合的版本 勾选 下载

JDK1.8u162以及JDK1.8所有历史版本官网下载地址

很多网友想看JDK1.8里面所有的版本,今天我就给大家带来了所以JDK1.8版本的官方下载地址,其中包括Windows版本和Linux版本 JDK1.8所有版本官网下载链接 Java Archive Downloads - Java SE 8 Attention!!! Java Archive | Oraclehttps://www.oracle.c…

JDK 的 ORACLE 官网下载步骤

下面以下载 jdk-8u181-linux-x64.tar.gz 为例,说明下在 ORACLE官网下载的具体步骤 1、进入oracle官网–>Resource–>Software Downloads,如下截图: 2、进入页面后,下滑选择“java”,然后点击“Java(JDK) for De…

eclipse jdk官网下载不了

最近在学习java的简单语法,在下载eclipse时受挫,通过浏览器怎么都下载不下来。 最后,我是通过迅雷下载的,速度杠杠滴。哈哈,莫名给迅雷打个call。 1、eclipse下载地址:https://www.eclipse.org/downloads…

JDK官网下载与安装过程

一、JRE与JDK介绍 java是当前比较流行的一种编程语言,当我们开始学习java的时候肯定会先要安装jdk,然后进行环境变量控制。 JRE(Java Runtime Environment ) Java运行环境,用来运行JAVA程序的。 JDK(Java Development Kit) Java开发工具包&…

ubuntu下载安装jdk

1.首先进入Oracle官网 2.点击Products中的Software中的Java 3.下拉到如下位置,点击Oracle JDK 4.进入后选择自己所想要的版本,这里我选择Java SE8版本的jdk 5.下拉页面,这里我选择LInux x64位版本的压缩包文件,点击右侧下载 …

Oracle官网 JDK下载 注册登录公共账号和密码

目录 问题现象: 问题分析: 解决方法: 备注: 问题现象: 今天打算去下载一个linux版本的JDK8,于是去了Oracle官网下载,结果发现要注册登录!!!我记得以前是不…

jdk官网下载账号登陆

目前jdk官网下载需要登陆才能进行下载 解决方案:下面为大家提供一个可以免费使用的账号和密码 账号:1985479344qq.com密码:Oracle123

官网下载 jdk1.7

官网下载 jdk1.7 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u80-oth-JPR

JDK1.8官网下载安装以及配置环境变量教程(官网)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVMJava系统类库)和JAVA工具。 一、JDK下载 1.百度搜索jdk或者Oracle官网,点击进…