2016-07-10 5 views
0

Ich erhalte diese Störung, wenn ich versuche, den Gaußsche Kernel-Test auf der Shogun Entwickler-Seite bei
https://github.com/shogun-toolbox/shogun/wiki/README_developer gegeben zu kompilieren.
Ich folgte den gegebenen Anweisungen, um die Shogun-Bibliothek .so unter https://github.com/shogun-toolbox/shogun/wiki/INSTALL herzustellen.
Ich ging dann in das Verzeichnis über das, das die gemeinsame Objektbibliothek enthielt und die Reihenfolge "g++ GTest.cpp shogun/libshogun.so -o a.out" ausgab und den Fehler erhielt, der das Thema dieses Beitrags ist.
Ich lief durch einen Thread im Netz (2 Link Einschränkung), aber ich konnte keine bestimmte Lösung finden.
Hat jemand eine Idee, wie man das löst?'undefined reference to `Shogun :: SGRefObject :: unref()' beim Kompilieren mit .so Objekt

Antwort

0

Sie sollten nicht versuchen, die gemeinsam genutzte Bibliothek direkt mit Ihrem Beispiel zu verknüpfen. Sagen Sie bitte ein Shogun basierten Beispieldatei erstellt, lassen Sie uns es um shogun_example.cpp, nennen dies zu kompilieren Sie laufen soll:

g++ shogun_example.cpp -o shogun_example -lshogun

ist dies im Falle der libshogun.so im Suchpfad des Linkers ist.

Wenn die kompilierte libshogun.so nicht im Suchpfad ist, dann sollten Sie den Speicherort der gemeinsam genutzten Bibliothek an den Compiler bieten mit -L, zum Beispiel:

g++ shogun_example.cpp -o shogun_example -L<path to the shogun shard lib> -lshogun

+0

Leider diese funktionierte nicht. Ich benutze die Anweisung "g ++ -std = C++ 11 -DHAVE_EIGEN3 classifier_gaussian_process_binary_classification.cpp -o classgp -lshogun" in einem Versuch, das Beispiel innerhalb des Examples-Ordners zu kompilieren und bekomme eine Wäscherei von undefinierten Referenzen. Ich setze jede der g ++ include-Suchvariablen auf den Ordner/usr/local/include, in dem Shogun seinen Include-Ordner nach der Installation gespeichert hat. Ich habe auch die Variable LD_LIBRARY_PATH eingerichtet, damit Shogun die gemeinsam genutzte Bibliothek finden kann. Ich kann andere Beispiele zusammenstellen und ich habe eigen 3 mit apt-get – ConfusedGrammer

+0

installiert Also warum funktioniert es nicht? – ConfusedGrammer

+0

Das Problem wurde gelöst. Stellt sich heraus, OpenCL ist eine Abhängigkeit und es ist etwas, was ich übersehen, weil ich nicht den Text gelesen habe, wie ich die gemeinsam genutzten Bibliotheken mit cmake installiert wurde. Lektion hier ist CMake Anweisungen während der Installation zu lesen, unabhängig davon, wie einfache Anweisungen auf einer Website Installation lol machen. Danke, dass du mich ertragen hast. – ConfusedGrammer

Verwandte Themen