Linux下安裝ROHC協議庫並測試
引言
關於ROHC協議的介紹我就不說了,詳見我的另一篇部落格《ROHC協議簡介》,地址如下:
http://blog.csdn.net/u013793399/article/details/51425161
本來我是想在同一片文章裡先寫協議簡介,然後寫怎麼安裝怎麼配置怎麼測試等等。結果寫完簡介發現好長。。。只好再開一篇。
這次,我們從零開始,在Ubuntu系統中,安裝RoHC協議庫,並且編譯、執行官方自帶的測試檔案。
步驟
- 首先要下載協議包。下載地址:
https://rohc-lib.org/support/download/#supported-releases
這個協議是開源的,也可以用作商業用途,唯一限制就是如果用了這個開源協議,那麼做出來的東西也必須開源。
- 下載libpcap和cmocka支援包,ROHC協議庫需要先安裝這兩個包才能安裝。下載地址:
http://pan.baidu.com/s/1c1ZjGGg
也可以直接去官方下載地址下載,這樣還能下載到最新的版本。
- 把上面三個包拖到Ubuntu虛擬機器裡,解壓縮,就像這樣:
接下來要開始安裝了。
在安裝的過程中,有可能會出現xxx not found的錯誤。這是因為有些支援包在你的系統裡沒有,但是不要擔心,無需專門去下載,需要專門下載的兩個包你都已經下載好了→_→
只需要用
sudo apt-get install xxx
//xxx是包名
即可安裝缺失的包
先安裝libpcap和cmocka。開啟libpcap解壓後的目錄,找到INSTALL安裝文件。
雙擊開啟,看第一段。
所以安裝步驟很明確了,開啟終端,cd 到解壓目錄,按順序分別輸入以下命令:
./configure
make
su
//這裡要輸入你的密碼
make install
然後就裝好了。
- 同樣的,我們開啟cmocka目錄,找到README檔案。
所以安裝步驟就是,
先在解壓目錄下新建一個build資料夾
然後在命令列cd到該資料夾,輸入:
sudo apt-get install cmake
cmake /這裡寫你的安裝路徑
make
我這裡是因為已經裝過一次,build資料夾不為空,所以會報錯,如果build是空的就會成功。
- 然後我們來裝ROHC
- 開啟rohc的解壓目錄,找到README
妹的。。。好吧我們去找INSTALL
所以很明顯了,這個庫本身不需要另外的支援包,但是如果想加點什麼鬼,例如測試什麼的,就需要別的包支援,然後列出了一大堆包,其中就有我們已經裝好的libpcap和cmocka。
沒辦法,裝唄,反正都是同一句命令。
裝好支援包後,在rohc根目錄輸入
./configure --prefix=/這裡輸入你要安裝的路徑
make all
make install
然後把上圖的一堆enable全部裝上
舉個栗子
./configure --enable-app-fuzzer
注意,前面的都可以一條條分開裝,但是最後兩條必須這樣寫:
./configure --enable-rohc-tests --enable-rohc-tests-valgrind
這是因為valgrind安裝的條件的其中一個是tests需要被同時安裝,如果分開裝會報錯,告訴你tests不支援。
- 最後是測試,這個地方是坑的一筆,搞了我一整天。
- 在ROHC官網上找到測試的教程,網址如下:
https://rohc-lib.org/wiki/doku.php?id=library-tests
例如我們測試無反饋通道的情況:
cd tests/non_regression
按照教程,輸入
./test_non_regression_*.sh
誒??為什麼不行???
那是因為還沒有生成這個工程的輸出檔案,就這個鬼搞了我好久好久,真是槽點滿滿。
我們在這個目錄下能找到一個.c檔案,但是千萬不要用gcc編譯它,會被編譯器玩死的,編譯器會告訴你找不到某個檔案,但是你發現那個檔案就在上一級目錄,或者在別的目錄,你很開心,複製到工程目錄,再編譯,然後編譯器找不到另一個檔案,形成惡性迴圈。而那些“找不到”的檔案,都在makefile裡面明確指出了路徑,makefile就是檔案之間的走線啊。。。
真正的解決方法是:
在non_regression目錄下
make test_non_regression
沒錯。。。不需要.c字尾,我也不知道為什麼。。。
然後就可以
./test_non_regression_*.sh
終於成功了。。。T_T
簡直感動哭了。