/ / yaml-cpp wird nicht mit g ++ kompiliert - yaml-cpp

yaml-cpp kompiliert nicht mit g ++ - yaml-cpp

Ich muss yaml-cpp zum Laufen bringen, aber es wird nicht ohne Fehler kompiliert. Ich verwende Ubuntu 12.04 und yaml-cpp-0.5.1 von Hier, die mit "cmake" und "sudo make install" installiert wurde, um sicherzustellen, dass die Bibliotheken korrekt in den gewünschten Pfad "/ usr / local / include / yaml-cpp" kopiert wurden.

Zu Testzwecken habe ich versucht, einige Codezeilen zu kompilieren

#include "yaml-cpp/yaml.h"
int main(int argc, char **argv) {
YAML::Node config = YAML::Load("[1,2,3]");
return 0;
}

was ich im Grunde von dieser Seite bekommen habe Hier. Wenn ich jetzt renne

g++ -o yaml_test yaml_test.cpp

oder

g++ -I/usr/local/include -L/usr/local/lib -lyaml-cpp -o yaml_test yaml_test.cpp

Ich bekomme immer die gleiche Fehlermeldung

/tmp/ccgvKdN2.o: In function `main":
yaml_test.cpp:(.text+0x1d): undefined reference to `YAML::Load(char const*)"

was meines Wissens bedeutet, dass die Bibliotheken nicht gefunden wurden.

Was geht hier vor sich? Warum wird es nicht einfach kompiliert?

Antworten:

0 für die Antwort № 1

Basierend auf Ihrem Kommentar sieht es so aus, als ob yaml-cpp 0.2.7 bereits in Ihrem System installiert ist. Sie haben zwei Möglichkeiten:

  1. Entfernen Sie das vorhandene Paket von Ihrem System. Ich bin mir nicht sicher, wie genau aptitude funktioniert, aber Sie können versuchen, einfach die Dateien zu löschen /usr/local/lib/libyaml-cpp.* und /usr/local/include/yaml-cpp/ und dann yaml-cpp 0.5.1 von Grund auf neu installieren. (Beachten Sie, dass Sie wahrscheinlich auch einen Konflikt mit Header-Dateien hatten, aber das Glück hatten, dass dieser ordnungsgemäß behoben wurde. Ich würde die 0.2.7-Header löschen und dann 0.5.1 frisch installieren.)

  2. Sie können 0.5.1 an einem separaten Speicherort installieren (z. $HOME/lib und $HOME/include), und stellen Sie dann sicher, dass diese Verzeichnisse zuvor überprüft wurden /usr/local in Ihren Pfadvariablen.

Ich würde wahrscheinlich Option 1 wählen, da ich nicht sicher binWarum Sie beide installieren müssen. Ich nehme an, es ist möglich, dass einige andere Pakete, die Ihr Paketmanager installieren möchte, von yaml-cpp 0.2.7 abhängen, was ein Problem sein könnte.