编译hyperscan

1. 需要的环境

hyperscan官方开发文档

1.1 硬件环境

Intel X86平台32位或者64位都可以运行。另外hyperscan在编译时可以添加一些新的特性,如果系统支持:

  • Intel Streaming SIMD Extensions 4.2 (SSE4.2)
  • POPCNT指令
  • BMI, BMI2指令
  • Intel AVX2指令

例如:

cmake -DCMAKE_C_FLAGS="-march=corei7" \
  -DCMAKE_CXX_FLAGS="-march=corei7" 

对于不同的cpu特性,-march表格如下:

Variant cpu支持的特性flags gcc arch flag
Core 2 SSSE3 -march=core2
Core i7 SSE4_2 and POPCNT -march=corei7
AVX 2 AVX2 -march=core-avx2
AVX 512 AVX512BW (见下面注释1.1) -march=skylake-avx512

注释1.1:AVX 512是至强处理器引入的指令集,并不是所有的cpu都支持,编译时默认是关闭的。如果需要打开,编译时执行如下代码
cmake - DBUILD_AVX512 = on <...>

1.2 软件环境

GCC/C++编译器

  • GCC, v4.8.1或更高版本
  • Clang, v3.4或更高版本(包含libstdc++或libc++)
  • Intel C++ Compiler v15或更高版本

操作系统

  • Linux
    • Ubuntu 14.04 LTS or newer
    • RedHat/CentOS 7 or newer
  • FreeBSD
    • 10.0 or newer
  • Mac OS X
    • 10.8 or newer, using XCode/Clang

其他系统可能也可以运行hyperscan,但性能稳定性无法担保。

其他一些依赖

依赖的软件 版本 备注
CMake >=2.8.11
Ragel 6.9
Python 2.7
Boost >=1.57 只需要Boost的头文件
Pcap >=0.8 可选项:只例子程序需要

Boost头文件

boost不用编译和安装,只需要把头文件链接到hyperscan源码中即可,以Boost-1.59.0正式版为例:

ln -s boost_1_59_0/boost /include/boost

1.3 编译和安装

编译

  1. cd
  2. mkdir hs_build;cd hs_build
  3. cmake -D=
  4. cmake --build .

-D参数列表

变量名 描述
CMAKE_C_COMPILER 使用c编译器,默认是/usr/bin/cc
CMAKE_CXX_COMPILER 使用c++编译器,默认是/usr/bin/c++
CMAKE_INSTALL_PREFIX 安装目录
CMAKE_BUILD_TYPE Debug,Release,RelWithDebInfo,MinSizeRel,默认是RelWithDebInfo
BUILD_SHARED_LIBS 默认是静态库,设置这个参数编译为动态库
BUILD_STATIC_AND_SHARED 同时生成静态库和动态库,默认关闭
BOOST_ROOT Boost源代码树的位置
DEBUG_OUTPUT 打开啰嗦模式输出,默认关闭
FAT_RUNTIME 在linux环境默认打开,其他环境没有

一个例子

源码是hyperscan-4.7.0

cd hyperscan-4.7.0
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=on ../hyperscan-4.7.0
cmake --build .
  • -DCMAKE_BUILD_TYPE=Release:编译为release版本,默认是RelWithDebInfo
  • -DBUILD_SHARED_LIBS=on:生成动态库,默认生成静态库

你可能感兴趣的:(协议分析)