Ich möchte die Proxygen c ++ - http-Bibliotheken von Facebook mit Ubuntu 16.04 aus github erstellen. Hier ist die Umgebung, die ich zusammen mit dem Befehl deps.sh eingerichtet habe, um Abhängigkeiten zu installieren:
%Vor%Das hat mich am meisten durch den Aufbau seiner Torheitsabhängigkeit gebracht, aber ich bekomme einen unvollständigen Typfehler:
%Vor%Hat jemand das versucht oder gelöst? Ich kenne die Codebasis noch nicht. Tia.
TL; DR Proxygen benötigt GNU-Erweiterungen; Verwenden Sie -std=gnu++11
oder -std=gnu++14
Warum müssen Sie beim Erstellen von proxygen und seinen Abhängigkeiten den C ++ - Standard überschreiben? Folly selbst gibt -std=gnu++1y
an. Wenn Sie
und versuchen, es zu bauen, es wird fast, die einzige Änderung, die ich zur Torheit machen musste, ist fix membarrier .
Wenn Sie darauf bestehen, -std=c++14
zu verwenden, dann ist das Problem tatsächlich nicht in Unsinn, es ist in libstdc ++ - Handhabung von GNU-Erweiterungen, diese einfache Zeile:
Wird leicht mit -std=gnu++11
oder -std=gnu++1y
kompiliert, wird aber mit -std=c++11
oder -std=c++14
fehlschlagen. Und es ist schwer zu sagen, ob es ein Fehler ist (weil der Compiler __int128
type bereitstellt (und Folly erkennt, dass in seinem configure Skript BTW) aber C ++ Bibliothek Probleme hat) oder ein Feature (weil __int128
ein ist Erweiterung an erster Stelle und man sollte eine GNU-Variante des Standards verwenden, um es richtig zu bekommen).
Tags und Links c++ c++14 ubuntu-16.04 gcc5 proxygen