標籤:source build height config XML 連結 contex rac data
在網上搜了下加入模組的教程,搜到了一個文章:ns3加入模組 ,可是這個文章只給出了如何加入的步驟。我認為寫的比較簡單,當我們須要加入別的模組時就不知道如何操作了。
所以,我寫這個文章,會將非常多遇到的細節問題和原因展現出來。
vanet-highway,這個模組是Bradley Dupont在Arbabi, Weigle的基礎上進行改進的模組代碼,使用了xml檔案以及增加了很多其它的情境因素,詳細能夠參見相關文檔。代碼文檔和介紹文檔能夠在google code中下載:Googlecode下載連結 ,有些不能FQ的同學下載不了,我上傳一份到csdn上:csdn代碼下載 。這份代碼來自於Google的ns3論壇:Google論壇代碼下載,相對於google code中的代碼更加符合module的目錄分類。
分模組編譯,能夠參考這個文章:ns3模組編譯,用一個簡單的範例。教你如何加入模組。ns3的官方也有教程。在ns3-manual中。ns3.20是在第18.2節:Adding a New Module to ns-3. 詳細就不翻譯了,非常好的參考資料。有一個python檔案能夠協助你產生模組的相關檔案和檔案夾:
./create-module.py new-module
vanet-highway中是給了範例的。為了跑這個範例。在加入好模組之後(直接建立一個檔案,然後將上述壓縮檔拷貝進去就能夠了)。然後須要使用waf來編譯模組,在編譯模組的過程中。因為ns3版本號碼的不斷升級,ns3.15的使用方法和ns3.20的使用方法已經產生了一些改變,如今把編譯過程中的一些問題(編譯使用./waf),依照先後問題,做記錄,以作參考:
1.(.text+0x18):對‘main’沒有定義的引用。這個是我自己加入測試模組時。main函數拼字錯誤造成,還有可能是檔案有沒有儲存。
2.BuildContext‘ object has no attribute ‘new_task_gen‘,對照一下檔案,就知道新版的wscript的寫法做了改變。例如以下改動就可以:
#headers = bld.new_task_gen(features=['ns3header'])headers = bld(features='ns3header')
3.../src/vanet-highway/model/WifiConfigurationXml.h:50:36: error: ‘WIFI_PHY_STANDARD_80211p_CCH’ was not declared in this scope
使用Google搜尋,搜尋到了這個檔案:http://www.nsnam.org/~pdbarnes/doxygen/wifi-phy-standard_8h_source.html,依照這個檔案把這兩個變數加入進去就可以。注意改動src中的代碼。否則cleanproject之後又會丟掉。
4.../src/vanet-highway/model/Highway.cc:255:85: error: ‘min’ was not declared in this scope
查看這個檔案。math.h中沒有這個函數,用fmin函數取代這個函數。
或者使用#include <algorithm>,然後用std::min來取代
5../src/vanet-highway/model/Highway.cc:83:28: error: expected type-specifier before ‘list’
在list前面加一個std::list。
6.程式的執行方式,能夠自己閱讀範例程式。也能夠參見:https://code.google.com/p/ns-3-highway-mobility/wiki/HighwayMobilityAndVehicularNetworksInNs3#How_To_Run
7.產生了檔案vehicleTrace.csv和networkTrace.csv,詳細含義。也能夠在wiki中查看。
剩下的是分析代碼,以及嘗試用netanim來繪出車輛的運動軌跡。google code中還提供了一個vehicle viewer代碼。能夠嘗試使用下。
ns3加入模組之vanet-highway