【发布时间】:2016-09-28 18:25:24
【问题描述】:
谁能发布一个如何编译使用libfreenect2 的代码的简单示例?安装库后,在我的主目录中创建了以下结构:
→ 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
我尝试使用与 pkg-config wikipedia 页面上类似的行来编译 .pc 文件:
gcc -o test test.c $(pkg-config --libs --cflags libpng)
但是出现了这个错误:
./test: error while loading shared libraries: libfreenect2.so.0.2: cannot open shared object file: No such file or directory
显然,我在某处搞砸了编译过程,但我不确定该去哪里寻找,因为这是在运行时而不是在编译时发生的错误。还有一个使用库安装创建的.cmake 文件,我相信它会带来更强大和更合适的解决方案,但我不完全确定如何使用它并且无法找到一个简单的指南展示如何做到这一点。任何指向初学者友好文档的链接也值得赞赏。在 libfreenect2 的文档中,它说在编译 cmake -Dfreenect2_DIR=$HOME/freenect2/lib/cmake/freenect2 时使用这一行——这是我在制作库或制作应用程序时必须使用的东西吗?
另一个切线相关的问题,将/include 和/lib 目录分别移动到/usr/local/include 和/usr/local/lib 会更好吗?我相信这会在整个系统范围内“安装”库,但我想 libfreenect2 不会自动执行它是有原因的,我不确定那是什么。
【问题讨论】:
-
像往常一样,当与不在标准位置的库链接时,您需要调整 RPATH 以使可执行文件工作,有数百万个示例如何使用 gcc 做到这一点。由于您不使用 CMake,
.cmake文件不相关,cmake标签也是。