ns如何进入虚拟系统,如何打开nsa
问题描述:
如果在ns3中创建自己的程序,在scratch下创建自己的单文件程序,waf可以成功编译运行,但是如果创建多个。cc文件,它不能在ns3附带的waf中成功编译。原因是ns3拥有的waf不找依赖,不知道怎么添加。
解决方法:
模仿src下modules的方法,把自己写的其他非主文件放到一个模块里,用ns3的waf编译时自动编译这个模块,这样就能正确找到头文件和链接。
具体步骤:
进入CDsrc//src源文件夹。
编辑VIMwscript//ns3的wscript
在all_modules下用这种格式添加自己的模块名,也就是以后要创建的文件夹的名称。这里添加了普通工作,最后
“共同工作”
保存和推送文件。
MK common-work//创建自己的文件夹
光盘共同工作
Mkdir模型//类似于其他模块创建的文件夹。你自己的头文件可以放在这里。cc文件也是。
举一个简单的打印函数的例子。(myzzg.h))))))).
#ifndef MYZZG_H
#定义MYZZG_H 1
void my print(;
#endif
直接在common-work文件夹里写自己的库函数:(myzzg.cc))))。
#包括
#include model/myzzg.h
作废我的指纹(
{
标准:cout
}
将wscript和waf文件从其他模块复制到该文件夹,然后修改wscript。
简单的例子如下(
# #-*-模式:python;py-indent-offset:4;缩进-制表符-模式:nil编码:utf-8;-*-
导入os.path
defbuild(建筑) :
#不启用“不做任何事情”功能.
#如果不是bld.env [ enable _ emu ]:
#返回
module=bld . create _ ns3 _ module(zzg),[network]).
module.source=[
myzzg.cc ,
]
headers=bld . new _ task _ gen(ns3 header))。
headers.module=zzg
headers.source=[
型号/myzzg.h ,
]
bld.ns3_python_bindings(
回到scratch自己写主程序,调用上述库时正确包含头文件。
比如如下图。(zzg.cc))。
#包括
int main())
{
我的打印(;
0;
}
实施。/waf - run zzg
你可以看到打印出来的句子。
分析原理是,在定制模块中,用ns3的waf编译时,把自己定义的头文件复制到build/debug/ns3/,而。对应模块的cc文件对应于。o档。
注:1。模块中的wscript文件指定模块中头文件的复制和。抄送文件。见上例。
2.复制到ns3的头文件的名称与模型下的名称相同。所以在scratch中使用时,如果不能顺利获取包含的头文件,可以查看编译后运行时的输出信息,也可以去文件夹看看是否已经复制到那里。
3.当前修改的wscript有问题。编译有问题,但不影响执行。例如,在上面的例子中,zzg-module.h文件是在ns3下生成的,它包含相应的错误消息。慢慢来。不影响大局。
Ns3在自己的模块中使用其他链接库。
(1)在本模块的wscript开头添加以下代码。
导入选项
ef会议:
conf.env.append _ value(链接标志,[-lmysqlclient]).
如果使用自己的链接库而不是-Lmysqlclient,并且需要指定基于链接的位置,请先添加-l部门。
2)编译src模块时,调用该模块的config。
vim src/wscript
在defconfigure[conf]:函数下添加
我的模型).
共享给:
2012-02-10 18:33
参考6633
给…作注解