我编译我的OpenCV程序如下:
g++ `pkg-config --cflags opencv --libs opencv` <filename>.cpp
这在我的电脑上运行得非常完美。我能否只编译程序的共享库,以便它可以在其他没有安装opencv的计算机上运行?如果可以的话,我该怎么做?
编译程序时,它们会动态链接到计算机上的共享库(.so文件)。编译后的可执行文件在运行时使用这些共享库。但是这些共享库可能不存在于其他计算机上,因此可能无法运行可执行文件。
解决方法是静态链接存档库(.a文件)而不是动态链接共享库。OpenCV不会分发存档库。因此,需要使用cmake -DBUILD_SHARED_LIBS=OFF
从源代码编译存档库。可以使用此存档库创建独立的可执行文件。
在某种程度上是的:查找 静态链接。您的opencv副本必须具有库的.a版本(不仅仅是.so您提到的),对于任何其他依赖项也是如此。
不行。你需要使用静态库。