2017-01-01 5 views
0

Ich versuche, die Boost-Log-Bibliothek zu kompilieren, und ich erhalte diesen Fehler aus der dump_avx2.cpp DateiFehler Kompilieren 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);\ 
          ^

ich viele Fehler auftreten, die oben auf die sehr ähnlich sind, alle von ihnen die gleiche Fehlermeldung, aber unterschiedliche Positionen in der Datei, in der sie auftreten, als Referenz bin ich auf der 68701167a1020b0b4c47b76e31d3a3da9e2faf3f für die Boost.Log Submodul abgerufene aus dem gitHub Repo-Hash-Commit (https://github.com/boostorg/boost)

Wer weiß, wie ich kann dieses Problem lösen? Ich baue mit einem C++ 14-Compiler und das ist, was ich bekomme, wenn ich g++ --version

Apple LLVM version 8.0.0 (clang-800.0.42.1) 

Dank geben!

Hinweis Ich sollte klarstellen, dass in diesem Zusammenhang erforderlich ist, dass ich diese Bibliothek separat kompilieren.

Hinweis Es scheint zwei verwandte Quelldateien dump_ssse3.cpp und die erwähnte dump_avx2.cpp Datei zu sein, kann ich nur einen von ihnen zu kompilieren? Ich kann nicht verstehen, was im build Ordner aus dem Jamfile zu tun :(

Antwort

1

, der wie ein Fehler in Klirren sieht (LLVM). Zunächst wird die intrinsische gehört, nicht SSE4.2 AVX2. Zweitens, um die ganze dump_avx2.cpp Datei ist kompiliert mit -mavx2, so dass die benötigten Erweiterungen aktiviert sind Sie können die Compiler-Schalter in der Fehlermeldung von b2 sehen und nein, sowohl dump_ssse3.cpp als auch dump_avx2.cpp sollten kompiliert werden Die Bibliothek führt eine Laufzeit-Erkennung der verfügbaren Befehle in der CPU und aus wählt die richtige Implementierung

+0

Entschuldigung ich glaube nicht, dass ich folge, was Sie sagten :(Was ist die Lösung für das Problem der Dinge nicht kompilieren? – Curious

+0

Melden Sie das Problem an den Compiler-Entwickler. Es gibt keine Lösung für die Bibliothek si de, es sei denn, Sie möchten es ändern. Wenn Sie dies tun, sollten Sie die Datei 'libs/log/build/Jamfile.v2', die 'avx2-targets-cond'-Regel ändern. Kommentiere oder entferne seinen Inhalt mit Ausnahme der ersten und der letzten Zeile (d. H. Die Regel sollte " nein" zurückgeben). Dadurch wird der AVX2-Teil der Bibliothek vom Erstellen ausgeschlossen. –

+0

Eine letzte Sache, also, wenn ich die Bibliothek ohne die Datei 'dump_avx2.cpp' baue, wird es dann wie gewohnt ohne irgendwelche Nebenwirkungen funktionieren? – Curious