Ubuntu11.04下***ns-allinone-2.34的总结
已有 5290 次阅读
|个人分类:|系统分类:|关键词:linux*** windows 解决方案 color 网站
***ns-allinone-2.34的经历,让我深深感到学习WSN的难度。
由于对linux系统的恐惧,想在windows xp下***ns-allinone-2.34,于是先***了cygwin,然后***ns-allinone-2.34时关键时刻总出错,网上对这种新版本的ns2的***解决方案也没有,最后只能放弃,开始了linux***之旅。
步骤一、***linux系统之Ubuntu
在网上能下载到Ubuntu 11.04 ,据说是最容易和简单的linux系统,很欣慰,于是开始装。
同时在该网站上下载了wubi.exe,能帮助初装的人在windows下自动***Ubuntu 11.04。
1、在电脑里整理出10G大小的磁盘空间,用以***Ubuntu 11.04。点击wubi.exe,出现自动***的界面,设置好***的磁盘位置,大小,以及用户名和密码等(这个很重要,也一定要记住),系统就会进入自动***过程,要保持网络连接顺利。
2、上述过程结束后,电脑将重启,同时进入到windows和ubuntu两个系统界面选项,此时移动上下键,选择ubuntu,进入到ubuntu的自动***界面。
整个过程,由于各种笨笨的操作失误,我持续了将近5个多小时,实际上2个小时就可以搞定。不过我***完后,很是兴奋,呵呵,第一次独立***了linux系统,没有高手指点,***后的Ubuntu系统很是漂亮,与多年前我对linux系统的印象完全不一样。记得五六年前,为了完成linux系统下嵌入式程序开发,研究过一些linux,对此深感恐惧和遗憾,那时的操作系统界面不是友好界面,什么都得靠指令,而且很多应用程序要经历诸多曲折才能***在linux下。而现今的Ubuntu系统,已经呈现出比windows 7更好的性能,令人很是神奇!
步骤二、Ubuntu11.04下***ns-allinone-2.34.tar.gz
***操作系统只是简单的一步,ns2的***才是令人头大的关键。
按照网上的指示,似乎***ns2很简单,只要解压、***就能成功,可事实是,由于我下载的版本很高,很多文件并没有相应的更新,在***过程中,要手动修改文件。
1、更新Ubuntu系统文件,虽然系统是最新版本的,但是不代表里面的文件都是最新的,需要更新。
使用快捷键Alt + F2,得到程序查找窗口,输入gnome termina,打开Ubuntu的终端,里面依次输入命令
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
即可。这里首次采用sudo时,需要用户密码,也就是***ubuntu时设置的。
2、为了更好的***ns2,还需要进行一些package的***,打开终端,输入
sudo apt-get install build-essential
sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev
sudo apt-get install libxmu-dev libxmu-headers
3、在上可以下载到ns-allinone-2.34.tar.gz,版本,将其放在/home/yourfile/下,这里yourfile是用户自己定义的文件名,在终端中输入
tar xvfz ns-allinone-2.34.tar.gz
cd /home/yourfile/ns-allinone-2.34
&& sudo gedit configure
在弹出的窗口文件中的
& 问题2、出现mobile/nakagami.cc:183:73: error: cannot call constructor mobile/nakagami.cc:185:67: error:&& for a function-style cast, remove the redundant ‘::GammaRandomVariable’make: *** [mobile/nakagami.o] 等,
&& cd /home/yourfile/ns-allinone-2.34
&& cd ns-2.34&
&& sudo gedit tools 在弹出的窗口文件中找到219行,删除 ::GammaRandomVariable
&& sudo gedit mobile 在弹出的窗口文件中找到183行,删除 ::ErlangRandomVariable,找到185行,删除 ::GammaRandomVariable
sudo apt-get install ns2即可。再次输入ns,出现%,代表你已经***成功了也可以运行自带的实例进行测试: ns /ns-allinone-2.33/ns-2.33/tcl/ex/simple.tcl ,
可以看到nam模拟窗口 。
注意:不要在终端中进入ns,而是直接的运行cd ***路径/......./examples,然后再执行
ns example2.tcl
就可以了,不会出现以下的错误:warning: using backward compatibility mode
error when calling class OldSim: example.tcl
NS2的***总算告一段落,着实让我兴奋了半天,以后的路还很长,因为这是一个对我全新的领域,充满着新鲜和迷茫呢!
转载本文请联系原作者获取授权,同时请注明本文来自丁洁科学网博客。链接地址:
上一篇:下一篇:
当前推荐数:0
评论 ( 个评论)
扫一扫,分享此博文
作者的其他最新博文
热门博文导读
Powered by
Copyright &Ubuntu10.04下成功***ns-allinone-2.35
要做网络模拟必须使用NS2,基于Cygwin这个虚拟主机的还是非常烦人,在WMware下***的老版本的Ubuntu10.04LTS(最新的12.04LTS),参考网络上的资料终于***成功,下面坐下总结:
1、下载ns-allinone-2.35,这是最新的2011年4月推出的版本:
(将会去到sourceforge进行下载)
将下载的ns-allinone-2.35.tar.gz放到/root目录中
2、下载***一些编译必备的包,root登录后在终端里输入如下语句:
# sudo apt-get install build-essential
# sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev
# sduo apt-get install libxmu-dev libxmu-headers
以上命令执行时提示不用理他,全部选择y(第一个提示将占用磁盘,第二个说不能通过系统检验)
3、解压ns-allinone-2.35.tar.gz,去到root目录下执行:
# tar xvfz ns-allinone-2.35.tar.gz
很快解压完毕,生成一个文件夹ns-allinone-2.35
4、***NS2,然后进入ns-allinone-2.35文件夹输入./install***,然后出现***成功提示,之后需要配置环境变量。这个过程很长,接近10分钟。借用两张截图用用,与我的Ubuntu中是所不同的就是,去掉“桌面”:
上面这是***成功的提示,下面是告诉我们需要把这个***后的目录添加到环境变量中去。
5、修改环境变量,直接copy上图中You MUST
put后面的路径,粘贴到/root/.bashrc最后面:
#gedit /root/.bashrc
在末尾加入下面语句
PATH=$PATH:/root/ns-allinone-2.35/bin:/root/ns-allinone-2.35/tcl8.5.10/unix:/root/ns-allinone-2.35/tk8.5.10/unix
LD_LIBRARY_PATH=/root/ns-allinone-2.35/otcl-1.14:/root/ns-allinone-2.35/lib
TCL_LIBRARY=/root/ns-allinone-2.35/tcl8.5.10/library
保存后重启终端
6、测试NS2,在终端输入#ns 则出现% 说明***成功
/root/桌面/ns-allinone-2.35/ns-2.35/tcl/ex/simple.tcl&
出现窗口如下即可
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Linux(33)
其实我先用的是NS-2.34,这个版本的编译起来基本问题不大,后来试用了下NS-2.27,结果各种问题,可能是这个版本太老的缘故,和新的Linux库很多不兼容,下面列出***过程中碰到的错误。
checking system version (for dynamic loading)... ./configure: line 7624: syntax error near unexpected token `)'
./configure: lline 7624: ` & & & OSF*)'
tcl8.3.2 configuration failed! Exiting ...
把以下文件中的.relid'`替换成.relid`:
& & ns-allinone-2.27\tcl8.4.5\unix\configure
& & ns-allinone-2.27\tcl8.4.5\unix\tcl.m4
& & ns-allinone-2.27\tk8.4.5\unix\configure
& & ns-allinone-2.27\tk8.4.5\unix\tcl.m4
& & ns-allinone-2.27\otcl-1.8\configure
clcl-mappings.h: In static member function `static int TclObjectHelper&T&::dispatch_(void*, Tcl_Interp*, int, char**)':
& & tclcl-mappings.h:51: error: incomplete type `Tcl' used in nested name specifier
& & tclcl-mappings.h:52: error: invalid use of undefined type `struct Tcl'
& & tclcl-mappings.h:41: error: forward declaration of `struct Tcl'
& & tclcl-mappings.h:57: error: invalid use of undefined type `struct Tcl'
& & tclcl-mappings.h:41: error: forward declaration of `struct Tcl'
& & make: *** [Tcl.o] Error 1
& & tclcl-1.15 make failed! Exiting
下载对应的gcc的***布丁,然后再***。把补丁放在和ns-allinone-2.27同一个目录下面进行如下操作:
1. get a fresh ns-allinone-2.27.tar.gz
2. tar zxvf ns-allinone-2.27.tar.gz
3. patch -p0 & ns227-gcc34.patch
4. cd ns-allinone-2.27
5. ./install
./sctp/sctp.h:632: 错误:有多余的限定‘SctpAgent::’在成员‘DumpSendBuffer’上
trace/trace.cc:185: 警告:不建议使用从字符串常量到‘char*’的转换
trace/trace.cc:185: 警告:不建议使用从字符串常量到‘char*’的转换
trace/trace.cc:185: 警告:不建议使用从字符串常量到‘char*’的转换
trace/trace.cc:185: 警告:不建议使用从字符串常量到‘char*’的转换
trace/trace.cc:185: 警告:不建议使用从字符串常量到‘char*’的转换
make: *** [trace/trace.o] 错误 1
Ns make failed!
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/sctp/sctp.h
void SctpAgent::DumpSendBuffer();
void DumpSendBuffer();
./mobile/god.h: At global scope:
./mobile/god.h:88: 错误:有多余的限定‘vector::’在成员‘operator=’上
./mobile/god.h:93: 错误:有多余的限定‘vector::’在成员‘operator+=’上
./mobile/god.h:98: 错误:有多余的限定‘vector::’在成员‘operator==’上
./mobile/god.h:101: 错误:有多余的限定‘vector::’在成员‘operator!=’上
make: *** [src_rtg/sragent.o] 错误 1
Ns make failed!
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/mobile/god.h
inline void vector::operator=(const vector a)
inline void vector::operator+=(const vector a)
inline int vector::operator==(const vector a)
inline int vector::operator!=(const vector a)
inline void operator=(const vector a)
inline void operator+=(const vector a)
inline int operator==(const vector a)
inline int operator!=(const vector a)
queue/cbq.cc:112: 错误:ISO C++ 不允许声明无类型的‘CBQueue’
queue/cbq.cc:112: 错误:expected ‘;’ before ‘*’ token
queue/cbq.cc: In member function ‘virtual int CBQueue::insert_class(CBQClass*)’:
queue/cbq.cc:488: 错误:‘class CBQClass’没有名为‘cbq_’的成员
queue/cbq.cc: In constructor ‘CBQClass::CBQClass()’:
queue/cbq.cc:805: 错误:类‘CBQClass’没有名为‘cbq_’的字段
queue/cbq.cc: In member function ‘virtual void CBQClass::recv(Packet*, Handler*)’:
queue/cbq.cc:850: 错误:‘cbq_’在此作用域中尚未声明
queue/cbq.cc:856: 错误:‘cbq_’在此作用域中尚未声明
queue/cbq.cc: In member function ‘void CBQClass::update(Packet*, double)’:
queue/cbq.cc:873: 错误:‘cbq_’在此作用域中尚未声明
queue/cbq.cc: In member function ‘int CBQClass::desc_with_demand()’:
queue/cbq.cc:928: 错误:‘cbq_’在此作用域中尚未声明
queue/cbq.cc: In member function ‘void CBQClass::newallot(double)’:
queue/cbq.cc:975: 错误:‘cbq_’在此作用域中尚未声明
queue/cbq.cc: In member function ‘virtual int CBQClass::command(int, const char* const*)’:
queue/cbq.cc:1002: 错误:‘cbq_’在此作用域中尚未声明
make: *** [queue/cbq.o] 错误 1
Ns make failed!
解决:(+就是添加,-就是去掉咯)
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/queue/cbq.cc
#define POWEROFTWO 16
+class CBQ
class CBQClass : public Connector {
./tora/tora_neighbor.h:72: 错误:ISO C++ 不允许声明无类型的‘toraAgent’
./tora/tora_neighbor.h:72: 错误:expected ‘;’ before ‘*’ token
tora/tora.cc: In member function ‘void toraAgent::rt_resolve(Packet*)’:
tora/tora.cc:238: 警告:不建议使用从字符串常量到‘char*’的转换
tora/tora.cc: In member function ‘void toraAgent::recvUPD(Packet*)’:
tora/tora.cc:462: 警告:不建议使用从字符串常量到‘char*’的转换
tora/tora.cc: In member function ‘void toraAgent::recvCLR(Packet*)’:
tora/tora.cc:648: 警告:不建议使用从字符串常量到‘char*’的转换
make: *** [tora/tora.o] 错误 1
Ns make failed!
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/tora/tora_neighbor.h
#define __tora_neighbor_h__
+class toraA
enum LinkStatus {
dsr/dsragent.cc:787: 错误:‘XmitFlowFailureCallback’在此作用域中尚未声明
dsr/dsragent.cc:1344: 错误:‘XmitFailureCallback’在此作用域中尚未声明
make: *** [dsr/dsragent.o] 错误 1
Ns make failed!
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/dsr/dsragent.cc
+void XmitFlowFailureCallback(Packet *pkt, void *data);
+void XmitFailureCallback(Packet *pkt, void *data);
/*===========================================================================
SendBuf management and helpers
diffusion/diffusion.cc:404: 错误:‘XmitFailedCallback’在此作用域中尚未声明
make: *** [diffusion/diffusion.o] 错误 1
Ns make failed!
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/diffusion/diffusion.cc
#include &routing_table.h&
+void XmitFailedCallback(Packet *pkt, void *data);
char *MsgStr[]= {&&, &INTEREST&, &DATA&, &DATA_READY&, &DATA_REQUEST&,
diffusion/omni_mcast.cc:367: 错误:‘OmniMcastXmitFailedCallback’在此作用域中尚未声明
make: *** [diffusion/omni_mcast.o] 错误 1
Ns make failed!
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/diffusion/omni_mcast.cc
#include &god.h&
+void OmniMcastXmitFailedCallback(Packet *pkt, void *data);
static class OmniMcastClass : public TclClass {
tcp/tcp-sack-rh.cc:68: 错误:有多余的限定‘SackRHTcpAgent::’在成员‘newack’上
make: *** [tcp/tcp-sack-rh.o] 错误 1
Ns make failed!
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/tcp/tcp-sack-rh.cc
virtual void computefack();
//virtual void SackRHTcpAgent::newack(Packet* pkt);
+virtual void newack(Packet *pkt);
pgm/pgm-agent.cc:278: 错误:有多余的限定‘PgmAgent::’在成员‘trace_event’上
pgm/pgm-agent.cc: In member function ‘void PgmAgent::handle_rdata(Packet*)’:
pgm/pgm-agent.cc:578: 警告:不建议使用从字符串常量到‘char*’的转换
pgm/pgm-agent.cc: In member function ‘void PgmAgent::handle_nak(Packet*)’:
pgm/pgm-agent.cc:727: 警告:不建议使用从字符串常量到‘char*’的转换
pgm/pgm-agent.cc: In member function ‘void PgmAgent::handle_ncf(Packet*)’:
pgm/pgm-agent.cc:824: 警告:不建议使用从字符串常量到‘char*’的转换
make: *** [pgm/pgm-agent.o] 错误 1
Ns make failed!
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/pgm/pgm-agent.cc
void print_stats();
-//void PgmAgent::trace_event(char *evType, double evTime);
+void trace_event(char *evType, double evTime);
pgm/pgm-sender.cc:160: 错误:有多余的限定‘PgmSender::’在成员‘trace_event’上
pgm/pgm-sender.cc: In member function ‘virtual void PgmSender::handle_nak(Packet*)’:
pgm/pgm-sender.cc:472: 警告:不建议使用从字符串常量到‘char*’的转换
pgm/pgm-sender.cc: In member function ‘virtual void PgmSender::send_rdata(RdataItem*)’:
pgm/pgm-sender.cc:619: 警告:不建议使用从字符串常量到‘char*’的转换
make: *** [pgm/pgm-sender.o] 错误 1
Ns make failed!
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/pgm/pgm-sender.cc
-//void PgmSender::trace_event(char *evType, nsaddr_t daddr, double evTime);
+void trace_event(char *evType, nsaddr_t daddr, double evTime);
pgm/pgm-receiver.cc:157: 错误:有多余的限定‘PgmReceiver::’在成员‘trace_event’上
pgm/pgm-receiver.cc: In member function ‘void PgmReceiver::generate_Nak(int)’:
pgm/pgm-receiver.cc:589: 警告:不建议使用从字符串常量到‘char*’的转换
make: *** [pgm/pgm-receiver.o] 错误 1
Ns make failed!
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/pgm/pgm-receiver.cc
-void PgmReceiver::trace_event(char *evType, double evTime);
+void trace_event(char *evType, double evTime);
./diffusion3/filter_core/filter_core.hh:111: 错误:expected `)' before ‘*’ token
make: *** [diffusion3/ns/diffagent.o] 错误 1
Ns make failed!
$gedit /usr/NS2/ns-allinone-2.27/ns-2.27/diffusion3/filter_core/filter_core.hh
class NeighborE
+class DiffRoutingA
typedef list&NeighborEntry *& NeighborL
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:75529次
排名:千里之外
原创:18篇
转载:25篇
评论:11条
(3)(23)(17)ubuntu(2)
1. 首先去http://www.isi.edu/nsnam/ns/ns-build.html下载ns-allinone-2.35.tar.gz
2. ***几个依赖文件
sudo apt-get install build-essential
sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev
sudo apt-get install libxmu-dev libxmu-headers
ns-allinone-2.35.tar.gz
mv ns-allinone-2.35 ns
#将文件夹ns-allinone-2.35改为ns,方便以后操作
sudo ./install
补充 :***包好像有一点问题,导致***失败
In file included from linkstate/ls.cc:67:0:
linkstate/ls.h: In instantiation of ‘void LsMap::eraseAll() [with Key = T = LsIdSeq]’:
linkstate/ls.cc:396:28: required from here
linkstate/ls.h:137:20: error: ‘erase’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of
instantiation [-fpermissive]
linkstate/ls.h:137:20: note: declarations in dependent base ‘std::map, std::allocator & &’ are not found by unqualified lookup
linkstate/ls.h:137:20: note: use ‘this-&erase’ instead
make: *** [linkstate/ls.o] Error 1
Ns make failed!
解决方法:
& & 将 ns/ns-2.35/linkstate/ls.h中的137行void eraseAll() { erase(baseMap::begin(), baseMap::end()); }改为 void eraseAll() { this-&erase(baseMap::begin(), baseMap::end()); }
5. 然后重新执行 sudo ./install
6.&设置环境变量
& & & sudo gedit &./bashrc
在文件尾加入: & &
export PATH=&$PATH:/XXX/ns/bin:/XXX/ns/tcl8.5.10/unix:/XXX/ns/tk8.5.10/unix&
export LD_LIBRARY_PATH=&$LD_LIBRARY_PATH:/XXX/ns/otcl-1.14:/XXX/ns/lib&
export TCL_LIBRARY=&$TCL_LIBRARY:/XXX/ns/tcl8.5.10/library&
注:XXX为ns所在绝对路径
7. 加入快捷启动
sudo ln -s /XXX/ns/bin/ns /usr/bin/
sudo ln -s /XXX/ns/nam-1.15/nam /usr/bin/注:XXX为ns所在绝对路径
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8441次
排名:千里之外
原创:16篇
(3)(7)(1)(3)(2)&&&&ns-allinone-2.34.tar.gz
ns-allinone-2.34.tar.gz
可以看看第三方ns-allinone-2.34.tar.gzns-allinone-2.34.tar.gz
若举报审核通过,可奖励20下载分
被举报人:
chen4013874
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动***等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
开发技术下载排行