libopencv_highgui.so
并且libopencv_highgui.so.2.4
可能是指向libopencv_highgui.so.2.4.0
.
库经常这样做,以便需要链接特定版本的软件可以同时保持通用库也公开。
当程序要链接到库的主要或次要版本时,这主要是有用的。考虑一个遗留应用程序是否需要链接到libopencv_highgui
. 该程序无法链接,libopencv_highgui.so
因为不能保证它是正确的版本。但是,该程序可以链接到libopencv_highgui.so.1.2
. libopencv_highgui.so.1.2 可能是 libopencv_highgui.so.1.2.3 的符号链接,但这没关系,因为第三个数字通常意味着不会破坏兼容性的小错误修复。
因此,这会显示您应该链接哪个文件。这真的取决于。除非您需要依赖特定次要修订的某些错误或怪癖,否则我肯定会避免链接到 2.4.0 版本。这将您的程序专门与版本 2.4.0 联系在一起。当 2.4.1 发布时(或者你的发行版的包管理器),它可能不会破坏你的程序。
如果您链接libopencv_highgui.so
,然后将 2.5 作为主库安装(然后 libopencv_highgui.so 链接到 libopencv_highgui.so.2.5.0),则您的程序可能无法正确链接,因为第二个数字有时意味着兼容性更改.
所以简而言之,如果它是一个个人项目,只需链接到你想要的任何东西。如果它是个人的,libopencv_highgui.so 可能是安全的。如果要分发它,请弄清楚您的代码将正确链接的库版本,然后尽可能使用最模糊的版本。例如,如果您的代码适用于 2.2、2.3 和 2.4,您应该继续链接到libopencv_highgui.so
. 如果它仅适用于 2.4.0,则应链接到libopencv_highgui.so.2.4.0
. 如果它适用于 2.4 的任何子版本,您应该使用 libopencv_highgui.so.2.4。
基本上,您必须选择您认为将在大多数人的设置上正确链接的内容。