Linux下的库链接
今天我(对我来说)经历了一个奇怪的行为:使用QMake和PkgConfig选项等。我能够链接opencv库,但后来我使用PkgConfig切换到CMake。当我尝试构建软件时,链接器抱怨说它无法找到库Linux下的库链接,linux,opencv,ld,Linux,Opencv,Ld,今天我(对我来说)经历了一个奇怪的行为:使用QMake和PkgConfig选项等。我能够链接opencv库,但后来我使用PkgConfig切换到CMake。当我尝试构建软件时,链接器抱怨说它无法找到库libcvaux,pkg config返回该库,请求为opencv(pkg config--libs opencv)交付库 在/usr/lib中,我找到了一个libcvaux.so.{version},但没有“普通”条目libcvaux.so。所以我做的是创建一个符号链接,现在它工作了 现在我想知道
libcvaux
,pkg config返回该库,请求为opencv
(pkg config--libs opencv
)交付库
在/usr/lib
中,我找到了一个libcvaux.so.{version}
,但没有“普通”条目libcvaux.so
。所以我做的是创建一个符号链接,现在它工作了
现在我想知道为什么它以前能起作用。有什么东西可以传递给ld
一个选项,上面写着“使用最新版本,然后通过查看so
后缀后面的数字来获得版本”吗?还是opencv包的维护人员忘记添加这个符号链接更像是某种错误?因为例如libcv
或libhighgui
有这样的符号链接
谢谢大家! 从ldconfig手册页: ldconfig检查头文件和文件 它遇到的库的名称 在确定哪些版本应该 更新他们的链接
可能之前的ldconfig运行删除了该链接。请转到serverfault或superuser。此问题中与c++无关。谢谢您的回答,我不知道
ldconfig
。不管怎样,我运行了它,它并没有解决我的问题。对于我提到的lib,它只创建一个符号链接version.subversion->version.subversion.patchlevel
。这与处理libcv
的方式不同,在这里我找到了libcvaux
的符号链接。我采取务实的方式坚持使用符号链接,并尽量记住,ldconfig
为所有其他库维护它们。