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 № 1Basierend 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:
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.)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.