错误编译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);
                              ^

我遇到了很多与上面一个非常相似的错误,所有错误都具有相同的错误消息,但是文件中发生的不同位置,以供参考,我在boost.log的commh hash 68701167a1020b0b4c47b76e31d3a3da9e2faf3f上从github repo(https://github.com/boostorg/boost)获取的子模块

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

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

谢谢!

注意我应该澄清,在这种情况下,我需要分别编译该库。

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

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