2017-01-01 45 views
0

我試圖編譯升壓日誌庫,我不斷從dump_avx2.cpp文件錯誤編譯Boost.Log

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爲Boost.Log子模塊從GitHub庫爲獲取(https://github.com/boostorg/boost

有誰知道我能解決這個問題嗎?我使用的是C++編譯器14和建設,這是我所得到的,當我鍵入g++ --version

Apple LLVM version 8.0.0 (clang-800.0.42.1) 

謝謝!

注意我應該澄清,在這種情況下,我需要單獨編譯這個庫。

注意似乎有是兩個相關的源文件dump_ssse3.cpp和提到dump_avx2.cpp文件,我必須編譯只是其中之一?我真搞不懂怎麼從的Jamfile在build文件夾:(

回答

1

這看起來像鐺(LLVM)的錯誤。首先,內在屬於AVX2,不SSE4.2做的。其次,整個dump_avx2.cpp文件編譯時使用了-mavx2,因此所需的擴展功能已啓用,您可以在b2錯誤消息中看到編譯器開關,編號爲dump_ssse3.cppdump_avx2.cpp應該被編譯。選擇正確的實現

+0

對不起,我不認爲我遵循你所說的:(對於不編譯的東西的問題的解決方案是什麼? – Curious

+0

將問題報告給編譯器開發人員。除非你想修改它。如果你這樣做,你應該修改'libs/log/build/Jamfile.v2'文件,'avx2-targets-cond'規則。註釋或刪除第一行和最後一行以外的內容(即規則應返回'否')。這將從建築物中排除圖書館的AVX2部分。 –

+0

最後一件事,所以如果我建立沒有'dump_avx2.cpp'文件的庫,那麼它會像平常一樣工作,沒有任何副作用? – Curious