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