在mac os x下配置NS2开发环境

1.前言

最近在做毕业设计,需要用NS2仿真器,由于手头只有一台macbook pro,因此决定在这个平台下配置这个工具,绝大多数内容都是从前人的帖子和博客里面找到的解决方法,作为一个搬运工,笔者在此将各种信息集合在一起,这样可以方便新人学习,可以少走一点弯路,毕竟自己也是折腾了好多遍的,用这种方式记下来对自己日后复习也是一种帮助。

2.开发环境

(1)Mac OS X 10.11 64位
(2)在终端输入 $ gcc -v查看编译器版本为
Apple LLVM version 7.0.0 (clang-700.1.76)
Target: x86_64-apple-darwin15.0.0
Thread model: posix
注:安装的过程中可能会出现错误,经过多次排查,其实跟编译器本身无关,不需要为此去安装真正的gcc,目前发现的错误没有一个是这个原因造成的。
3.步骤
(1)首先安装xQuartz,这个东西是一个支持的环境,本身的配置跟NS2无关,可以用homebrew来安装,具体如何操作可以自行查找资料,由于时间有点久了,笔者不记得具体过程了,因此就不写这个了。
(2)安装homebrew
以后很多工具都需要用上这个,虽然这个本身也和ns2没有关系,具体安装方式可以参考下面这篇博客,亲测通过:
(3)安装NS2,参考下面一篇博客安装NS2.
a. 安装完之后,在终端输入 $ ns之会进入一个输入的模式,这样就说明了NS2安装成功,在此之前,ns2安装完毕后,终端界面会提示用./validate命令来检测安装是否成功,很多情况下validate都不会成功,因为整个NS2安装文件有很多组件,比如说Xgraph画图工具就没有成功安装,因此validate有相当大几率会失败,但是这个并不影响使用,只要ns2本身能正常工作就够了,不需要去运行validate命令,非常浪费时间。如果在终端输入ns,提示该命令不存在,那么就是路径没有设置正确,只需要在~/.bash_profile文件里加上
export PATH=$PATH:/Users/xunhuang/ns2related/ns-allinone-2.35/bin就行了,如果没有该文件,就创建一个。
b. 测试tcl脚本是否可以正常使用,下面用一个例子来演示。
首先进入 /Users/xxxxx/ns2related/ns-allinone-2.35/ns-2.35/tcl/ex文件目录,查看目录中的文件, 然后找一个后缀名为tcl的文件,比如说 $ ns nam-example.tcl 来执行,执行结果如下图所示:
nam是一个动画仿真器,可以根据tcl文件执行的内容,用某种命令将节点的行为动态显示出来,具体细节此处先忽略,能出现这种界面,就说明nam也能成功运行,说明ns2安装成功。
(4)使NS2可以调试C++代码
到上一步为止,ns2已经可以通过把tcl文件当参数执行ns命令,来实现一些模拟,但是这不是本文的目的,ns2本身仿真在后台是用c++实现的,自身也提供了不少网络协议,比如说tcp和udp等等,当我们需要增加自己的网络模块的时候,之前的方式就完全没有办法了,很多新手,包括自己在内,就不知道应该从何下手了。剩下的步骤,默认读者对ns2的整个结构有一定了解,大概知道是个怎么回事,因为本文的篇幅也不可能介绍那么全面,笔者水平也有限。如果对ns2整个结构还没有入门的话,可以参考以下几篇文档,或者自行查阅资料。
b. Introduction to Network Simulator NS2
为了让大家不走弯路,本来在自己折腾中最后折腾的一步,可以放在现在来弄,联想到这一步涉及到了c++文件,首先想到的就是需要有调试功能,要想使ns2可以使用调试器,就得在编译的时候加上-g的选项,但是我们并不是用gcc直接对单个文件进行编译的,因此在这里,也有相应的办法,在 NS2 的 makefile.in 的编译 flag 中加入 -g 选项,确认编译出的可执行文件带有调试用的信息: $ mvim Makefile.in:
把CCOPT这一行改一下,至少要加上-g,保存。接下来的步骤很重要,因为Mac OS下的环境跟linux有一些区别,因此如果用 ./configure,然后再用make来重新编译的话,基本会失败,而且把原有的ns2的指令也弄失效了,所以只能重新用./install指令安装一遍,就可以了。然后测试调试器是否可以使用:
$ lldb ns nam-example.tcl
(lldb) target create "ns"
SCANs: realpath [/Users/xxxxxx/ns2related/ns-allinone-2.35/otcl-1.14/otcl-1.14] failed with errno 62 (Too many levels of symbolic links)
Current executable set to 'ns' (x86_64).
(lldb) settings set -- target.run-args  "nam-example.tcl"
(lldb)
确实进入了调试器的输入界面,说明安装成功。具体调试器怎么用就不介绍了,因为笔者也是新手,还不会用命令行操作lldb调试器。
注意:如果不小心使用了./configure命令导致整个软件失败的话,为了保险起见,首先要把之前打的补丁给卸载掉,然后重新打补丁(不一定是必须的,只是一种尝试方法),使用指令patch -p1 -R <patch_name即可卸载补丁,再根据3(2)中的教程重新打补丁,然后再重新安装。
(5)增加新的c++文件
这一步是重点,以下是由 NS by Example 截取的教程修改了一点然后翻译成中文
  1. 首先下载 "ex-linkage.cc" 文件, 放在 "ns-2” 目录下,我自己的目录名称是/Users/xxxxxx/ns2related/ns-allinone-2.35/ns-2.35/myCpp/
  2. 打开 "Makefile", 把 "ex-linkage.o” 增加到OBJ_CC后面,如下图337行所示:
  3. 然后在终端输入 "make" 重新编译.
  4. 下载 "ex-linkage.tcl” 文件
  5. 运行 "ns ex-linkage.tcl”结果如下图所示(如果没有把cc文件重新编译进去,是没办法正常运行tcl文件的).
  6. 进入调试模式,输入”lldb ns ex-linkage.tcl”.
4.总结
本文总结了自己安装ns2的过程以及遇到的问题和解决方式,在安装的过程中,参考了许多前人的研究结果,为了方便学习和交流,笔者写此文对此进行总结。
5.参考
[1].用 Xcode 调试 NS2
[2]. 在Mac os 10.9(Mavericks)中安装NS-2.35附自己制作的patch[修正一个错误]
[4]NS by Example

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

养乌龟的hx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值