编译错误 Boost.Log

Error compiling Boost.Log

我正在尝试编译 boost 日志库,但我不断从 dump_avx2.cpp 文件中收到此错误

error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'dump_data_avx2' that is compiled without support for 'sse4.2'
boost/boost/libs/log/src/dump_avx2.cpp:71:31: note: expanded from macro 'BOOST_LOG_AUX_MM_CONSTANTS'
    const __m256i mm_char_0 = _mm256_set1_epi32(0x30303030);\
                              ^

我收到很多与上面的错误非常相似的错误,它们都有相同的错误消息,但它们在文件中出现的位置不同,供参考我在提交哈希上 68701167a1020b0b4c47b76e31d3a3da9e2faf3f 对于从 github 存储库 (https://github.com/boostorg/boost)

中获取的 Boost.Log 子模块

有谁知道我该如何解决这个问题?我正在使用 C++14 编译器进行构建,这就是我键入 g++ --version

时得到的结果
Apple LLVM version 8.0.0 (clang-800.0.42.1)

谢谢!

注意 我应该澄清一下,在这种情况下,我需要单独编译这个库。

注意 似乎有两个相关的源文件dump_ssse3.cpp和提到的dump_avx2.cpp文件,我只需要编译其中一个吗?我无法从 build 文件夹中的 Jamfile 中确定要做什么:(

这看起来像是 clang (LLVM) 中的错误。首先,intrinsic 属于 AVX2,而不是 SSE4.2。其次,整个 dump_avx2.cpp 文件是使用 -mavx2 编译的,因此启用了所需的扩展。您可以在 b2 的错误消息中看到编译器开关。不,应该编译 dump_ssse3.cppdump_avx2.cpp。该库对 CPU 中的可用指令进行运行时检测并选择正确的实现。