Kontext
Ich versuche das Paket "root_numpy" zu kompilieren, welches eine Verbindung zwischen der wissenschaftlichen Analyse-Software "root" und dem Python-Paket "numpy" ist. Es wird als Teil des Root Wrappers "rootpy" verwendet. Ich bekomme einen g ++ Fehler, wenn die folgende Zeile ausgeführt wird:
%Vor%Das gleiche Problem tritt auf, wenn ich ein Programm "Hallo Welt" mit dem Flag kompiliere:
%Vor%Ohne dieses Flag wird alles gut übersetzt:
%Vor%Meine Compiler-Version ist:
%Vor% Als Ergebnis der Ausführung von sudo port install gcc48
. Meine Mac OS Version ist 10.9.3. Die Code-Datei "helloworld.cpp" ist wie erwartet
Frage: Von allem, was ich im Internet sammeln kann, ist das Flag "-stdlib = ..." ein Standard-Teil von g ++. Warum bekomme ich einen g ++ Fehler, wenn ich es einschließe? Wie kann ich das beheben?
Hinweis: Während ich die setup.py-Zeile manuell ausführe, ohne dass das Problem-Flag funktioniert, und das Kompilieren des gesamten Pakets zulässt, erlebe ich Verbindungsfehler, wenn ich versuche, das resultierende Paket in Python zu importieren. Ich bin besorgt, dass das g ++ Problem hier ein Symptom für ein größeres Problem ist, weshalb ich versuche, es direkt zu lösen.
-stdlib=libc++
ist eine Clang (nicht GCC) -Option und teilt clang mit, dass LLVM libc ++ - Standardbibliothek verwendet wird (was Clang verwendet) und nicht GNU libstdc ++ (was GCC verwendet).
Da Sie Verknüpfungsfehler erhalten haben, scheint es wahrscheinlich, dass andere Pakete, die Sie verwenden, mit clang und libc ++ kompiliert wurden, was nicht ABI-kompatibel mit GCCs libstdc ++ ist (außer für einige Low-Level-Sachen). Also müssen Sie das Paket auch mit clang und libc ++ kompilieren. Apples Xcode kommt mit clang (was wahrscheinlich das ist, was Sie dafür verwenden möchten), und MacPorts liefert auch eine Anzahl von clang-Distributionen.