安装测试环境:
vmware-ubuntu20.04,gcc 4.8.5,ragel-6.10.tar.gz,boost_1_69_0.tar.gz,hyperscan-5.1.0.tar.gz
下载地址:http://www.colm.net/files/ragel/ragel-6.10.tar.gz
$ tar -xvf ragel-6.10.tar.gz
$ cd ragel-6.10
$ ./configure
$ make
$ sudo make install
$ ldconfig
下载地址:Download Boost C++ Libraries from SourceForge.net
$ tar -xvf boost_1_69_0.tar.gz
$ cd boost_1_69_0
$ ./bootstrap.sh
$ sudo ./b2 --with-iostreams --with-random install
$ ldconfig
下载地址:https://codeload.github.com/01org/hyperscan/tar.gz/v4.0.0
$ tar -xvf hyperscan-5.1.0.tar.gz
$ cd hyperscan-5.1.0
$ mkdir cmake-build
$ cd cmake-build
$ cmake -DBUILD_SHARED_LIBS=on -DCMAKE_BUILD_TYPE=Release ..
$ make -j8 (j8表示使用8个核编译,make过程较慢,请静静等待)
$ sudo make install
$ ldconfig
如果在centos执行命令cmake -DBUILD_SHARED_LIBS=on -DCMAKE_BUILD_TYPE=Release ..提示sqlite3,pcre包找不到的问题解决可参考:
checking for module ‘sqlite3‘ package ‘sqlite3‘ not found_sa726663676的博客-CSDN博客
代码编译到90%会出现libc.so.6,libc_nonshared.a,ld-linux-x86-64.so.2三个依赖库缺失问题.这里需要根据提示信息将找到的包放入到对应的路径即可。hyperscan好像是固定路径找这三个包的位置,所以使用LD_LIBRARY_PATH加载动态库是不行的。
4.1 解决 libc.so.6问题:
sudo cp /usr/lib/x86_64-linux-gnu/libc.so.6 /lib/
4.2 解决libc_nonshared.a问题:
sudo cp /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib/
4.3 解决ld-linux-x86-64.so.2问题:
sudo cp /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /lib/
4.4 解决conda环境问题
处理完以上三个依赖包,继续安装,依然出现如下图错误:猜测这个错误大概和anacoda相关。
这个错误像是ananconda的虚拟环境引起。(猜测是anaconda虚拟环境的这个so包的版本较低,没有memcpy@GLIBC_2.14版本的东西。
我通过文档查找系统,确实存在这个版本https://www.shuzhiduo.com/A/KE5Q43Q4JL/)
使用conda deactivate取消conda的虚拟环境,继续make命令安装,依然提示报错,可能make有缓存之类的:
删除cmake-build文件夹,重新编译(如果重开的终端一定要取消conda虚拟环境):
$ mkdir cmake-build
$ cd cmake-build
$ cmake -DBUILD_SHARED_LIBS=on -DCMAKE_BUILD_TYPE=Release ..
$ make -j8
$ sudo make install
$ ldconfig
自此,安装完成:
然后我们可以进入lib包中发现编译生成了很多动态包了。
进入编译目录(cmake-build)的bin目录下:执行./unit
cd /bin
./unit-hyperscan
输入结果如下:程序都输出ok的话说明程序运行是没有问题的。
安装步骤参考自:https://www.cnblogs.com/yanhai307/p/10770821.html