1、源码下载
https://github.com/lemire/simdjson
2、源码编译
我是直接编译singleheader下的文件的,具体的编译命令README.md第一行就是,但是我编译时却一直报错
告警:#warning "BMI is missing?"
告警:#warning "We require AVX2 support!"
错误:simdjson.cpp:450:20: error: ‘avxcheckUTF8Bytes’ was not declared in this scope
previous = avxcheckUTF8Bytes(input_lo, &previous, &has_error);
开始没有头绪网上到处找都没找到,然后看github上源码下面介绍时发现使用simdjson必须满足的条件:
这里面除了gcc7以外,有一条"支持AVX2的处理器",这里说的是支持AVX2的指令集的处理器,查看机器指令集命令:cat /proc/cpuinfo
我的机器只支持AVX,不支持AVX2,所以编译告警#warning "We require AVX2 support!"
接下来我换了个机器,执行:cat /proc/cpuinfo
哈哈,有了
继续编译
竟然还报错,真是折腾人,经过一番度娘发现了问题所在,需要指定编译选项才行,可以在下面的网址去查需要添加哪个选项
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#expand=3828
然后加上编译选项继续编译:
竟然和查到的不一样,幸好系统给出了提示,编译通过啦
具体的命令是:g++ -march=native -O3 -std=c++17 -mpclmul -o amalgamation_demo amalgamation_demo.cpp