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

本文详细记录了simdjson源码的下载与编译过程,解析了编译中遇到的AVX2支持问题及解决方案,分享了指定编译选项的具体步骤。
887

被折叠的 条评论
为什么被折叠?



