我试图在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来源无济于事。
答案 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并重新构建。