Linux系統在使用時,難免碰到更新忍不住更新軟體包,更新軟體包有時會帶來開發環境的變化,環境的變化就會導緻一些編譯環境由于版本的原因無法編譯通過,今天介紹一下關于Python子產品的兩個問題的解決辦法:
- 問題一如下
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)
再向上看錯誤提示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcBnVtpVdWJDZ1x2RlZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TO1UTNwMTN2ETOyQDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
既然提示我們gccxml的版本需要大于等于0.9,那麼我們來看看現在的版本:
為什麼會這樣呢?因為現在gccxml被CastXML繼承了,ns3從下個版本(3.27)開始可能将抛棄gccxml而使用CastXML(https://www.nsnam.org/wiki/Ns-3.27),現在暫時作為bug被提出來了:
在官方解決該問題之前(而且我們也不确定什麼時候這個問題才會被解決),我們暫時先用着。上面的輸出你已經看到了,gccxml相容CastXML,并不是所有的功能都被支援,連版本資訊都無法正常擷取了,但是看最後一句,那麼我們試一下:
版本是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.x/bindings/python/ns3modulescan.py下面的這個檔案,把import導入指定子產品改為import *