首页 > 其他分享 >hyperscan编译

hyperscan编译

时间:2023-08-07 13:57:22浏览次数:30  
标签:ragel hyperscan intel 编译 colm home

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

标签:ragel,hyperscan,intel,编译,colm,home
From: https://www.cnblogs.com/studywithallofyou/p/17611000.html

相关文章

  • 微信小程序反编译
    微信小程序反编译工具准备1.模拟器(夜神,逍遥等都可以)2.模拟器里的微信3.模拟器里的RE管理工具,这个可以现在物理机里下载了apk文件,然后拖到模拟器里4.安装nodejs环境https://www.swvq.com/link/to?link=https://nodejs.org/en/5.反编译工具链接:https://pan.baidu.com/s......
  • 静态编译 PHP 8 系列、PHP7.4 、PHP7.3
    静态编译PHP运行时文档说明:只记录关键的地方;发布时间:2023-08-07备注:macos环境下不需要启动容器环境,直接构建即可PHP原生构建选项文档php7.4、7.3分支需要单独克隆(区别:openss使用v1版本,curl库不启用http2库http3库)复用swoole-cli编写......
  • 【shipin教程】RK3568开发板系统编译与烧写
    1_本期视频介绍以及观看建议2_RK3568开发板启动模式以及引导顺序(必看)3_Android11源码包编译-获取Android11源码4_Android11源码包编译-整体编译(必看)5_Android11源码包编译-单独编译uboot6_Android11源码包编译-单独编译内核和设备树7_Android11源码包编译-单独编译Android11......
  • 使用 Roslyn引擎动态编译代码
    Roslyn引擎自2014年开源至今这么久,一直没怎么了解过,虽然VS2015早就集成了它。以前老一套的动态编译方法在.NETCore中似乎不再支持了,很多方法都是未实现的。下面就介绍如何在.NETCore环境中使用Roslyn进行动态编译。话不多说,Talkischeap,showmethecode.首先是安装nuget......
  • linux基础:编译
    程序编译在linux中,gnu项目提供了gcc编译器、g++编译器和gdb调试器。C和C++语言正在不断发展,为了保持兼容程序语言的最新特性,开发者通常选择GCC来编译C语言编写的源代码,选择G++来编译C++语言编写的源代码。编译过程:预处理、编译、汇编、链接预处理:将所有的#include头文件、#......
  • bazel test 编译失败:googletest、gtest 报错
    问题描述bazeltest遇到很多奇怪的编译错误,报错位置位于“googletest”目录,而且没有修改过googletest源码:ERROR:/bazel_cache/output_user_root/.../external/google/BUILD.bazel:80:11:Compilinggoogletest/src/gtest-matchers.ccfailed:(Exit1):gccfailed:errore......
  • clang 静态编译 ffmpeg
    文档说明:只记录关键的地方;发文时间:2023-08-06意义:静态编译ffmpeg,可自由裁剪,使用libc构建;支持macos、linux构建;生成库依赖库图环境:alpine:3.17dockerclang备注:大部分软件源代码来源于github.com,下载过程断断续续的。请自备代理借助swoole-cli已经编写好......
  • 一、Flink-1.13.6源码编译运行
    1、概述本节演示如何在本地编译、运行Flink源码。技术有限,欢迎各位大佬在评论区批评指正。2、版本说明名称版本flink1.13.6jdk1.8Maven3.2.5操作系统Mac3、编译Flink源码1)从github下载Flink源码gitclonehttps://github.com/apache/flink......
  • 深度学习编译器前端技术概述
    AI编译器在前端经常会做一些静态分析,方便在前端做一些优化:自动微分等。中间表示(IntermediateRepresentation,IR)IR是编译器用于表示源代码的数据结构或代码,是程序编译过程中介于源语言和目标语言之间的程序表示。几乎所有的编译器都需要某种形式的中间表示,来对被分析、转换......
  • 多个C文件混合编译,涉及函数相互调用,地址传递要注意的!
    tc.h#pragmaoncechar*fun();//main函数调用到这个函数,但是在其他.c中定义,在头文件申明下先tacc.c#include<stdio.h>char*fun(){printf("saDHAKJHFJ\n");inti=100;printf("i=%d\n",i);char*pr=(char*)malloc(100);*pr......