编译后未链接共享对象库

Shared Object Library not linked after compiling

我的程序使用 libuvc 库,因此 libuvc.so.0。

但是编译成功后,我不能运行这个程序,因为:

root@Raspi_DataHarvest:~/Schreibtisch# g++ UVCCameraHandler.cpp `pkg-config --libs --cflags opencv` `pkg-config --libs --cflags libuvc` -o UVCCameraHandler.o

./UVCCameraHandler.o: error while loading shared libraries: libuvc.so.0: cannot open shared object file: No such file or directory

原因是:

root@Raspi_DataHarvest:~/Schreibtisch# ldd UVCCameraHandler.o
        linux-vdso.so.1 (0x7edff000)
        /usr/lib/arm-linux-gnueabihf/libarmmem.so (0x76f1a000)
        libopencv_dnn.so.3.4 => /usr/local/lib/libopencv_dnn.so.3.4 (0x76bc7000)
        libopencv_ml.so.3.4 => /usr/local/lib/libopencv_ml.so.3.4 (0x76b20000)
******  libuvc.so.0 => not found  *******
...

文件位于:/usr/local/lib/arm-linux-gnueabihf/libuvc.so.0.0.6

但我不知道如何link .so 文件...

您需要告诉 运行-time 加载程序在哪里可以找到您的库,因为这不是正常路径。

使用此命令运行:

LD_LIBRARY_PATH="/usr/local/lib/arm-linux-gnueabihf:$LD_LIBRARY_PATH" ./a.out

或者你可以将这个LD_LIBRARY_PATH导出为环境变量,然后直接运行./a.out