使用OpenFlow构建/链接ns3网络模拟器时出错

时间:2015-10-07 15:02:47

标签: c linux linker simulator ns-3

我试图在VirtualBox VM内的Fedora 22上构建ns-3.24.1。我正在跑步:

./ waf configure --enable-examples --enable-tests --with-openflow = / path / to / openflow --with-pybindgen = / path / to / pybindgen ./waf build

我想使用OpenFlow,因此在运行上述configure命令之前,我根据these instructions下载并配置/构建了OFSID。配置步骤的输出显示OpenFlow已启用'。

ns-3.24.1构建正常进行,直到它进入下一步并吐出后续错误:

[2291/2493] Linking build/src/openflow/examples/ns3.24.1-openflow-switch-debug
./libns3.24.1-openflow-debug.so: undefined reference to `update_checksums'
collect2: error: ld returned 1 exit status
...

即,它似乎正确构建了所有内容,但在链接步骤中出现了错误。

显然 update_checksums 位于/ ns-3.24.1 / src / openflow / model / openflow-interface.h;由于某种原因,链接步骤不知道在这里查看 openflow-interface.h

可能导致它的原因是什么,我可以尝试修复它?我是多次重新下载ns-3和OFSID来源无济于事。

3 个答案:

答案 0 :(得分:1)

首先,除非您想要使用OpenFlow和/或Python进行开发,否则无需安装OpenFlow / Python。它在教程中解释:

  

关于未构建模块的部分:

     

未构建的模块(有关说明,请参阅ns-3教程):   brite点击openflow visualizer

     

这只是意味着   某些与外部库有依赖关系的ns-3模块可能不会   已经构建,或者配置明确要求不要   建立他们。这并不意味着模拟器没有构建   成功或它将为模块提供错误的结果   被列为正在建设中。

配置'你看到OpenFlow已启用吗?

  

在----可选NS-3功能摘要中:您应该看到:

     

" NS-3 OpenFlow集成:已启用"

答案 1 :(得分:0)

最新版本的gcc需要以下两个补丁来修复上面报告的链接问题: 1)http://code.nsnam.org/openflow/rev/4db95a8ea718 2)http://code.nsnam.org/ns-3-dev/rev/270a1c2fb158

这些补丁将包含在ns-3.25版本中。

答案 2 :(得分:0)

在下载的openflow发行版的switch /文件夹中检查您的pt_act.c文件。如果未将update_checksums定义为静态函数,请遵循@Tom Henderson的建议1),该建议要求您在“ void inline”之前添加“ static”。

static void inline

然后1)重建openflow。 2)转到ns发行版的位置,从build / lib中删除libns3.24.1-openflow-debug.so。 3)配置WAF并重新构建。