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