在NS3中建立新的库函数手动添加依赖
在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的文件目录结构如下:
将所需cc、h文件复制到src/temp/model目录下,替换原有的temp.cc和temp.h文件,并重新命名为temp.cc和temp.h
通常temp.cc文件中有引用.h头文件的要求,需要将.cc文件中头文件部分名称相应改变。
修改src/temp/wscript文件:
$cd src/temp/
$ls
$vim wscript
关于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中建立新的库函数手动添加依赖相关教程