4

我编译我的 OpenCV 程序如下:

g++ `pkg-config --cflags opencv --libs opencv` <filename>.cpp

它在我的电脑上完美运行。我可以用程序单独编译共享库,以便它可以在其他没有 opencv 的计算机上运行吗?如果是这样,我该怎么做?

4

3 回答 3

2

编译期间的程序动态链接到我们计算机上的共享库(.so 文件)。编译的可执行文件在运行时使用这些共享库。但是这些共享库可能不存在于其他计算机上,因此可能无法运行可执行文件。

对此的解决方案是静态链接存档库(.a 文件),而不是动态链接共享库。OpenCV 不会像这样分发存档库。因此,必须使用 cmake -DBUILD_SHARED_LIBS=OFF. 此存档库可用于创建独立的可执行文件。

于 2012-07-03T14:35:14.910 回答
1

在某种程度上是的:查找静态链接。您的 opencv 副本必须具有 .a 版本的库(不仅仅是您提到的 .so),对于任何其他依赖项也是如此。

于 2012-07-02T19:41:15.783 回答
0

不,您需要使用静态库。

于 2012-07-02T19:40:55.223 回答