SDN软件交换机ofsoftswith13编译问题

主要内容

由于SDN软件交换机ofsoftswitch13的wiki不够完善,支持的平台有限,想要使用该交换机的新手即使按照其文档一步一步做,也经常会遇到一些问题。目前,我发现部分常见的问题google上还找不到答案,在这里总结一下。

操作系统版本问题

这是最常见的一个问题。ofsoftswitch13发布的时候只支持Ubuntu 12.04平台,官方给出的文档也都是针对Ubuntu 12.04的,所以按照文档上的步骤编译出错的问题大都来自于操作系统的版本太高,比如用了14.04,出错后应首先确认系统是否兼容。
当然高版本的操作系统都安装好了,总不能换系统吧。下面介绍的就是如何解决在14.04版本上编译的问题。

nbee编译失败问题

官方只给出了ofsoftswitch13在Ubuntu 12.04下的编译步骤,如果你使用的操作系统是Ubuntu 14.04,那么同样的步骤就行不通了。当然后来有人也在Ubuntu 14.04下给出了一个参考的解决方案。但是,就算这个补丁的步骤一字不差的编译下去,仍然有可能遇到如下问题:

1
2
3
4
gramm.y: In function ‘int pfl_parse(ParserInfo*)’:
gramm.y:282:69: error: ‘pfl_lloc’ was not declared in this scope
gramm.y:300:85: error: ‘pfl_lloc’ was not declared in this scope
SymbolField *field = CheckField(parserInfo, (char*)field_no_star.c_str(), &pfl_lloc);

这正是我今天在Ubuntu 14.04上编译遇到的问题。果断Google之,很快在Github项目主页上发现了这个issues,不幸的是该issues还处于未被解决的open状态。

没有其他办法,看来只能自己解决了。按照编译报错的提示,‘pfl_lloc’ was not declared in this scope,怎么会是变量未定义这种低级错误?nbee这种久经沙场的开源库出现如此2B的错误,不可能的啊。我只能重新审视自己的编译过程,看nbee的文档,终于发现的了问题所在,问题在于编译的源码还不够完整,直接从nbee官网下载的源码还需要创建一系列文件才可用。可以在nbee目录下按顺序执行以下命令:

1
2
3
4
$ createbin.sh
$ createdoc.sh
$ createdevpack.sh
$ createsrc.sh

所以NetBee的README文档是不够完善的,他应该把这部分内容添加进去。我找到解决办法后立即回复了这个issues(更新:我第二天收到邮件显示该问题已经“closed”,说明解决办法有效),接着就可以顺利的在Ubuntu 14.04上编译了。

0%