hyperscan編譯

hyperscan是intel開發的用於高效正則匹配的工具。適用場景就是數據量大,性能要求高,匹配關鍵字領域。

hyperscan會把需要檢測的關鍵字/正則表達式轉換成對應的db數據,然後使用這些db數據進行匹配。所以如果數據更改了,需要重新創建。

理論上只能在intel的x86架構下才可以正常使用,因爲intel使用了一些硬件特性進行加速。arm下也能編譯使用,可能性能會受影響。

編譯依賴庫

http://www.colm.net/

編譯colm

https://github.com/adrian-thurston/colm

./autogen.sh
./configure --prefix=/home/colminstall
make
make install

把colm安裝到一個目錄,不適用默認路徑,避免對系統造成污染,並且如果後續遷移需要,可以直接拷貝編譯的文件。

編譯ragel

https://github.com/adrian-thurston/ragel

./autogen.sh
./configure --with-colm=/home/colminstall --disable-manual --prefix=/home/ragelinstall
make
make install

ragel需要colm,指定上面編譯安裝的路徑
禁用manual,因爲編譯報錯,需要其他類庫,但是也用不到,直接禁用即可
同樣指定ragel安裝到一個目錄

編譯hyperscan

https://github.com/intel/hyperscan
https://intel.github.io/hyperscan/dev-reference/getting_started.html#target-arch

下載boost

hyperscan需要boost,但是隻需要boost的一些頭文件,不用編譯。

編譯

cd <where-you-want-to-build-hyperscan>
mkdir <build-dir>
cd <build-dir>
cmake ../. -DBOOST_ROOT=/home/boost_1_82_0/ -DCMAKE_PROGRAM_PATH=/home/ragelinstall/bin/
make -j<jobs>

#測試
bin/unit-hyperscan

-DBOOST_ROOT=/xxx 指定boost目錄
-DCMAKE_PROGRAM_PATH=/xxx 指定ragel可執行文件目錄

Tip 爲cmake的參數指定數值的方法就是-D,後面緊跟需要設置的參數名,然後加上等號,跟上需要設置的數值

指定ragel

hyperscan需要ragel,編譯如果不指定,會報錯,根據提示,查看hyperscan目錄下的CMakeLists.txt,可以看到find_program(RAGEL ragel),說明用的是ragel的bin文件,並不是類庫,按照cmake官方文檔 https://cmake.org/cmake/help/v3.0/command/find_program.html,需要指定CMAKE_PROGRAM_PATH參數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章