This package provides the libraries, include files needed for developing Hyperscan applications.
Features
-
Support Both static libraries and dynamic libraries
-
Support chimera library
-
Not Support AVX512/AVX512BMI
Supported distributions and versions
Name | Static | Dynamic | Remark |
---|---|---|---|
libhs | Support | Support | contains both compiler and runtime portions |
libhs_runtime | Support | Support | only contains runtime portions |
chimera | Support | Not Support | a hybrid of Hyperscan and PCRE |
In addition, the following software is required for compiling the Hyperscan library:
Dependency | Version | CentOS7 | CentOS8 | Required | Notes |
---|---|---|---|---|---|
GCC | >=v4.8.1 | 4.8.5 | 8.4.1 | YES | 4.8.5 not support AVX512(BMI) |
CMake | >=2.8.11 | 2.8.12.2 | 3.18.2 | YES | - |
Ragel | 6.9 | 7.0.0.9 | 7.0.0.12 | YES | in epel-release |
Python | 2.7 | 2.7.5 | 3.9.2 | YES | - |
Boost | >=1.57 | 1.53.0 | 1.66.0 | YES | Boost headers required(only headers) |
Pcap | >=0.8 | 1.5.3 | 1.9.1 | Optional | needed for example code only |
Sqlite | >=3.0 | 3.7.17 | 3.26.0 | Optional | for tool hsbench |
Pcre | >=8.41 | 8.32 | 8.42 | Optional | for tool hscollider |
Notes:
If you want build all tools, install packages
sqlite-devel,pcre-devel,libpcap-devel
CentOS7/8 install ragel need install epel repo first (
yum install epel-release
)CentOS8 install libpcap-devel need enable PowerTool repo (
/etc/yum.repos.d/CentOS-Linux-PowerTools.repo
)CentOS7(GCC-4.8.5) not support AVX512 and AVX512BMI, but CentOS8(GCC-8.4.1) is OK.
If you want support AVX512 and AVX512BMI in CentOS7, you need upgrade the GCC(GCC-4.9.2 introduced AVX512 support, AVX512BMI need GCC>=8), you should use devtoolset. but the libstdc++ in devtooset is not compatible with the one in CentOS-7, you should combine libstdc++ to the static library.
yum install -y centos-release-scl yum install -y devtoolset-10-gcc-c++ scl enable devtoolset-10 bash #source /opt/devtoolset-10/enable # build hyperscan ar x libhs.a ar x libstdc++.a ar cru libhs.a *.o ranlib libhs.a
Source | Version | Notes |
---|---|---|
boost | 1.77.0 | for all libraries |
pcre | 8.45 | for chimera library |
Notes:
If you want build chimera, place PCRE source directory under Hyperscan root directory, and rename
pcre-8.4x
topcre
Option | Defaut | Build |
---|---|---|
CMAKE_BUILD_TYPE | RelWithDebInfo | RelWithDebInfo |
BUILD_STATIC_AND_SHARED | OFF | ON |
BOOST_ROOT | - | boost_1_77_0 |
CMAKE_INSTALL_PREFIX | /usr/local | /usr |
BUILD_EXAMPLES | ON | OFF |
FAT_RUNTIME | OFF | - |
BUILD_AVX512 | OFF | - |
BUILD_AVX512VBMI | OFF | - |
CMAKE_C_FLAGS | - | -fPIC |
CMAKE_CXX_FLAGS | - | -fPIC |
$ rpm -qpl hyperscan-5.4.0-1.el7.x86_64.rpm
/usr/include/hs/ch.h
/usr/include/hs/ch_common.h
/usr/include/hs/ch_compile.h
/usr/include/hs/ch_runtime.h
/usr/include/hs/hs.h
/usr/include/hs/hs_common.h
/usr/include/hs/hs_compile.h
/usr/include/hs/hs_runtime.h
/usr/lib64/libchimera.a
/usr/lib64/libhs.a
/usr/lib64/libhs.so
/usr/lib64/libhs.so.5
/usr/lib64/libhs.so.5.4.0
/usr/lib64/libhs_runtime.a
/usr/lib64/libhs_runtime.so
/usr/lib64/libhs_runtime.so.5
/usr/lib64/libhs_runtime.so.5.4.0
/usr/lib64/pkgconfig
/usr/lib64/pkgconfig/libch.pc
/usr/lib64/pkgconfig/libhs.pc
# libhs and libhs_runtime
$ pkg-config --libs --cflags libhs
-I/usr/include/hs -lhs
# chimera
$ pkg-config --libs --cflags libch
-I/usr/include/hs -lchimera
Note:
If you want link the static library to a executable file, you shoud use
-l:libhs.a -lm -lstdc++
format,-static
or-Bstatic
options will make a lot of troubles.
Lubin lgbxyz@gmail.com.
This module is licensed under the MIT license.