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/ -DCMAKE_INSTALL_PREFIX=/home/hyperscaninstall/
make -j<jobs>
make install

#测试
bin/unit-hyperscan

-DBOOST_ROOT=/xxx 指定boost目录
-DCMAKE_PROGRAM_PATH=/xxx 指定ragel可执行文件目录
-DCMAKE_INSTALL_PREFIX=/xxx 指定安装目录

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参数

posted @ 2023-08-07 13:45  秋来叶黄  阅读(283)  评论(0编辑  收藏  举报