天天看點

NS3編譯遇到的Python相關的問題解決辦法

  Linux系統在使用時,難免碰到更新忍不住更新軟體包,更新軟體包有時會帶來開發環境的變化,環境的變化就會導緻一些編譯環境由于版本的原因無法編譯通過,今天介紹一下關于Python子產品的兩個問題的解決辦法:

  1. 問題一如下
PyViz visualizer              : not enabled (Python Bindings are needed but not enabled)
Python Bindings               : not enabled (PyBindGen missing)
           

  這個問題其實很好解決,執行一下pip install pybindgen就行了。

2. Python綁定問題解決之後還有提示gccxml版本太舊的問題

Python API Scanning Support   : not enabled (gccxml too old)
           

再向上看錯誤提示:

NS3編譯遇到的Python相關的問題解決辦法

既然提示我們gccxml的版本需要大于等于0.9,那麼我們來看看現在的版本:

NS3編譯遇到的Python相關的問題解決辦法

為什麼會這樣呢?因為現在gccxml被CastXML繼承了,ns3從下個版本(3.27)開始可能将抛棄gccxml而使用CastXML(https://www.nsnam.org/wiki/Ns-3.27),現在暫時作為bug被提出來了:

NS3編譯遇到的Python相關的問題解決辦法

在官方解決該問題之前(而且我們也不确定什麼時候這個問題才會被解決),我們暫時先用着。上面的輸出你已經看到了,gccxml相容CastXML,并不是所有的功能都被支援,連版本資訊都無法正常擷取了,但是看最後一句,那麼我們試一下:

NS3編譯遇到的Python相關的問題解決辦法

版本是0.9,也就是可用的,那麼接下來隻需要讓系統編譯調用gccxml時讓它指向gccxml.real就行了:

mv /usr/bin/gccxml /usr/bin/gccxml.bak
ln -s /usr/bin/gccxml.real /usr/bin/gccxml
           

這樣問題就解決了。

3. cannot import name free_function_t

NS3編譯遇到的Python相關的問題解決辦法

解決辦法:直接改源碼吧,找到ns3.x/bindings/python/ns3modulescan.py下面的這個檔案,把import導入指定子產品改為import *

繼續閱讀