NS3 - 关于Waf

本文介绍了使用waf编译ns-3工程的方法,包括配置优化编译、设置suid以及常见waf命令。通过waf,可以方便地管理项目的编译选项,例如启用或禁用特定特性,查看详细选项等。

用waf编译

上一节讲了用build.py编译,其实也可以用waf编译,简单介绍一下。

编译方法二:用waf

  • 我们使用waf来配置和编译ns-3工程软件包,这一点不是严格必须的,但是做一个简单的介绍是很有必要的,起码可以了解如何修改工程的配置。也许你能做出的最有用的配置修改就是编译工程的优化版本了,默认你会将你的工程编译为调试版本,让我们来使工程做出优化的编译。
  • 为了通知waf进行优化编译,你需要执行如下的命令:
./waf -d optimized configure
  • 需要注意输入的最后一部分。部分ns-3选项并不是默认的,需要底层系统的支持才能够顺利运行。例如:为了运行XmlTo, 系统必须安装libxml-2.0库,如果没有发现这个库,相应的ns-3特性就不会被激活,这会以消息显示出来。另一个需要注意的地方是:对于一些特定的程序,需要使用sudo命令来设置该程序的。这个是默认设置为关的,所以此性质会显示出未激活,现在我们可以进一步返回到调试编译上来:
./waf -d debug configure
  • 此时编译系统被配置好,你可以编译ns-3程序的debug版本了,只需简单的命令如下:
./waf
  • 一些waf命令在编译阶段是很重要的,另一些命令是在配置阶段有用的,例如,如果你想使用ns-3的仿真(emaulation)特性,你一定要通过上述的sudo来设置用户标识位(suid)为有效位。这将是一个配置命令,你可以使用如下命令通知Waf来重新设置:
./waf -d debug --enable-sudo configure
  • 如果你这样做,waf会运行sudo以root的权限来改变仿真代码的socket创建程序。在waf中还有许多其它的配置和编译选项可用。若要察看详细的选项,键入以下命令:
./waf --help

waf常用命令

1 配置及编译:

$ ./waf  configure [option]
$ ./waf

帮助: $ ./waf --help

配置调试,优化调试:

$ ./waf -d  configure
: debug,optimized

改变flag: $ CXXFLAGS="-O3" ./waf configure
或者: $CXX=g++-3.4 ./waf configure

编译的结果放在目录:build//srcpath

2 常见命令

1.开启例子及帮助:

$ ./waf configure --enable-examples --enable-tests

2.运行doxygen生成文档

$ ./waf --doxygen

3.运行代码分析:

$ ./waf configure --enable-gcov
$ ./waf --lcov-report

4.运行程序

$ ./waf --run "program [args]"

5.使用帮助工具运行waf

$ ./waf --run programname --command-template "... %s ..."
如: $ ./waf --run run-tests --command-template "valgrind %s"

6.使用shell调试

$ ./waf --shell
例: $./waf --shell
 $cd build/debug/examples
 $gdb first

7.清除整个build目录

$ ./waf distclean

8.创建一个发布压缩包,包含源代码目录中的所有文件

$ ./waf dist

9.强制禁止python bindings

$./waf --disable-python configure

10.让build系统使用sudo设置suid bit

$./waf --enable-sudo configure

11.重置waf

$cd  repos/ns-3-allinone
$ ./build.py
给定的参考引文中未包含dce-ns3-1.12的相关内容,以下是基于一般知识的介绍。 ### 详细介绍 dce-ns3是一个在ns - 3网络模拟器中实现离散事件仿真环境(Distributed Computing Environment, DCE)的扩展。dce-ns3 - 1.12可以理解为其特定的一个版本。它主要用于在ns - 3模拟环境中运行真实的用户空间程序,从而实现更真实的网络模拟。它允许网络研究人员将实际的应用程序,如协议栈、网络服务等集成到ns - 3的模拟场景中,使得模拟结果更加贴近实际网络环境。 ### 使用方法 通常使用dce-ns3 - 1.12需要以下几个步骤: 1. **安装**:首先需要安装ns - 3以及dce - ns3 - 1.12扩展。这可能涉及到从官方仓库获取源代码,然后进行编译和安装。例如,在Linux系统中,可以使用如下命令从源码编译安装: ```bash git clone [<ns - 3源码仓库地址>] cd dce - ns3 - 1.12 ./waf configure ./waf build ``` 2. **配置模拟场景**:使用ns - 3的API来创建网络拓扑,如节点、链路等。然后在这些节点上配置dce环境,使其能够运行真实的应用程序。以下是一个简单的Python示例: ```python import ns.core import ns.network import ns.dce # 创建节点 nodes = ns.network.NodeContainer() nodes.Create(2) # 创建dce节点 dce_manager = ns.dce.DceManagerHelper() dce_manager.Install(nodes) # 配置应用程序 application_helper = ns.dce.DceApplicationHelper() application_helper.SetBinary (&#39;<应用程序二进制名称>&#39;) application = application_helper.Install (nodes.Get(0)) application.Start(ns.core.Seconds(1.0)) ``` 3. **运行模拟**:编译并运行模拟脚本,观察模拟结果。 ### 功能特性 - **真实性**:可以运行真实的用户空间程序,如TCP/IP协议栈、Web服务器等,提高模拟的真实性。 - **灵活性**:支持用户自定义应用程序和网络拓扑,方便进行各种网络场景的模拟实验。 - **扩展性**:可以与ns - 3的其他模块集成,如信道、移动模型等,扩展模拟的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值