编译后未链接共享对象库
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
。
我的程序使用 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
。