Würde jemand in der Lage sein, ein einfaches Beispiel für die Kompilierung von Code zu posten, der libfreenect2 verwendet? Nachdem die Bibliothek installieren, wird die folgende Struktur in meinem Home-Verzeichnis erstellt:Erstellen mit libfreenect2
gcc -o test test.c $(pkg-config --libs --cflags libpng)
:
→ tree freenect2
freenect2
├── include
│ └── libfreenect2
│ ├── config.h
│ ├── export.h
│ ├── frame_listener.hpp
│ ├── frame_listener_impl.h
│ ├── libfreenect2.hpp
│ ├── logger.h
│ ├── packet_pipeline.h
│ └── registration.h
└── lib
├── cmake
│ └── freenect2
│ └── freenect2Config.cmake
├── libfreenect2.so -> libfreenect2.so.0.2
├── libfreenect2.so.0.2 -> libfreenect2.so.0.2.0
├── libfreenect2.so.0.2.0
└── pkgconfig
└── freenect2.pc
ich mit der .pc Datei eine Zeile wie diese auf der pkg-config Wikipedia-Seite gefunden zu kompilieren versucht
aber kam mit diesem Fehler mit bis:
./test: error while loading shared libraries: libfreenect2.so.0.2: cannot open shared object file: No such file or directory
Offensichtlich ich den Übersetzungsvorgang irgendwo vermasselt, aber ich bin nicht sicher, wo sie suchen müssen, da dieser Fehler auf ru ist erfolgt ntime und nicht zur Kompilierzeit. Es gibt auch eine .cmake
Datei, die mit der Bibliotheksinstallation erstellt wurde, was sicherlich zu einer robusteren und korrekeren Lösung führen würde, aber ich bin mir nicht ganz sicher, wie ich das verwenden soll und habe keine einfache Anleitung gefunden, wie das funktioniert um es zu tun. Alle Links zu einsteigerfreundlichen Dokumentationen werden ebenfalls geschätzt. In der Dokumentation zu libfreenect2 heißt es, diese Zeile beim Kompilieren zu verwenden: cmake -Dfreenect2_DIR=$HOME/freenect2/lib/cmake/freenect2
- muss ich das bei der Erstellung der Bibliothek oder bei der Antragstellung verwenden?
Eine weitere tangential verwandte Frage, wäre es besser, die /include
und /lib
Verzeichnisse /usr/local/include
und /usr/local/lib
jeweils zu bewegen? Ich glaube, das würde die Bibliothek systemweit "installieren", aber ich stelle mir vor, es gibt einen Grund, warum Libfreenect2 es nicht automatisch macht und ich bin mir nicht sicher, was das ist.
Wie üblich, wenn Sie mit Bibliotheken nicht in Standard-Speicherort verknüpfen müssen Sie RPATH für die ausführbare Datei arbeiten anpassen, gibt es Millionen Beispiele, wie man das mit gcc. Da Sie CMake nicht benutzen, ist die '.cmake' Datei nicht verwandt und auch 'cmake' Tag. – Tsyvarev