在NS3中建立新的库函数手动添加依赖

在NS3中建立新的库函数

  • 问题介绍
  • 解决方法
  • 具体步骤
      • 进入ns-3.xx/src文件目录下
      • 仿照src中的其他模块,构建一个自己的模块文件//命名为temp
      • 可以看到新模块temp的文件目录结构如下:
      • 将所需cc、h文件复制到src/temp/model目录下,替换原有的temp.cc和temp.h文件,并重新命名为temp.cc和temp.h
      • 修改src/temp/wscript文件:
      • 环境编译 生成新模块

问题介绍

ns3自带的waf工具并不会主动寻找依赖,也不知道怎么添加依赖,因此waf编译器无法自己找#include的文件。
在网页上寻找的教程看得我有点云里雾里,结合自己“网络建模与仿真”实验所学的经验,把解决方法分享出来~

解决方法

仿照src目录下其他的模块文件,将自己编写的头文件都放到一个模块中,编译生成新的模块,在用ns3中的waf编译时会自动编译这个模块,从而达到正确找到头文件的目的。

具体步骤

进入ns-3.xx/src文件目录下

仿照src中的其他模块,构建一个自己的模块文件//命名为temp

$./create-module.py temp

$cd temp

$ls
doc examples helper model test wscript

可以看到新模块temp的文件目录结构如下:

在NS3中建立新的库函数手动添加依赖_第1张图片

将所需cc、h文件复制到src/temp/model目录下,替换原有的temp.cc和temp.h文件,并重新命名为temp.cc和temp.h

通常temp.cc文件中有引用.h头文件的要求,需要将.cc文件中头文件部分名称相应改变。

在NS3中建立新的库函数手动添加依赖_第2张图片

修改src/temp/wscript文件:

$cd src/temp/

$ls

$vim wscript

在NS3中建立新的库函数手动添加依赖_第3张图片

关于wscript文件相关说明:

module = bld.create_ns3_module(‘temp’,[‘core’,‘network’,‘internet’,‘stats’])

temp 为创建的模块名,最后模块生成后,将在ns-3.27/build/ns3/目录下,生成一个
temp.h的文件。以后用户自己编写程序,#include “ns3/temp.h” 就可以直接调用这个模块了。

后面的[‘core’,‘network’,‘internet’,‘stats’]是该模块在代码编写过程中,需要信赖的相关模块名。

module.source 表示该模块的源代码,若还想增添新的.cc文件均可放入其中。

module_test 为该模块的测试相关文档,在用./create-module.py命令时自动创建

headers = bld(features=‘ns3header’) 是固定格式,用户不用改变。

headers.module = ’ temp ’

headers.source = … //用户对.h头文件进行设置,所需.h文件放入其中

环境编译 生成新模块

$cd ns-allinone-3.27/ns-3.27/ //回到ns主目录下

$./waf configure

$ ./waf build

$cd build/ns3/

$ls
可以看到,在\ns-3.27\build\ns3文件中生成了相应的模块:
在NS3中建立新的库函数手动添加依赖_第4张图片

你可能感兴趣的:(ns3)