当使用的pybindgen版本与要求不符合时,
在ns3主目录
./waf configure --enable-examples --enable-tests --enable-mpi --force-planetlab --with-nsclick=/home/cqq/repos/ns-3-allinone/click --with-pybindgen=/home/cqq/repos/ns-3-allinone/pybindgen --with-ofswitch13=/home/cqq/repos/ns-3-allinone/netbee/src/ofsoftswitch13
我这样一步到位的./waf configure
,免得下次加一个模块之后又得重新弄一次。
————10月27日更————
上面那个--force-planetlab
其实我也不知道什么意思,就加上了,结果后来./waf build
的时候发现报错了。还是去掉吧。
另外,先要获取GCC-XML
从https://github.com/gccxml/gccxml 上获取源码。
这里有指导:
http://gccxml.github.io/HTML/Install.html
然后我没有编译通过,说是『函数重复定义』
算了,先别计较那么多了,能用pyvis就不错了,暂时先别弄这个gccxml
了。
$ mkdir gccxml-build
$ cd gccxml-build
$ cmake ../gccxml
$ make
$ make install
出现这样的情况
pybindgen (found '0.17.0.post49+ng0e4e3bc'), (need '0.17.0.post41+ngd10fa60')
然后导致pybindgen版本不符而无法使用pyviz。
这里需要vi bindings/python/wscript
。
将对应的行中
REQUIRED_PYBINDGEN_VERSION = '0.17.0.post41+ngd10fa60'
将等号后面的版本号修改为需要的版本号,就不会报错了。
总结
注意到一个细节就是,其实这里的所谓版本好其实就是git的commit号,于是我猜测,可以在pybindgen
目录下通过git log
查看历史commits号,找到0.17.0.post4x+ngxxxxxxx
后面那7个x就是commit号,只要git checkout xxxxxxx
就可以到对应的那个版本,然后再sudo python setup install
然后安装的应该就是对应的那个commit号的pybindgen
了。我只是猜测觉得很有可能是这样,大家可以尝试一下。应该两种方法都可以。