【问题标题】:linking libraries under LinuxLinux下的链接库
【发布时间】:2011-07-04 06:50:44
【问题描述】:

今天我经历了一个(对我来说)奇怪的行为:使用带有 PkgConfig 选项等的 QMake。我能够链接 opencv 库,但后来我使用 PkgConfig 切换到 CMake。一旦我尝试构建我的软件,链接器就会抱怨它无法找到库 libcvaux,pkg-config 返回要求为 opencv (pkg-config --libs opencv) 提供库。

/usr/lib 中,我找到了libcvaux.so.{version},但没有“普通”条目libcvaux.so。所以我所做的是创建一个符号链接,现在它可以工作了。

现在我想知道为什么它以前有效。有什么东西可以通过ld 一个选项说“使用最新版本,你可以通过查看so 后缀后面的数字来获得版本”?还是 opencv 包的维护者忘记添加这个符号链接的某种错误?因为例如libcvlibhighgui 有这样的符号链接。

谢谢!

【问题讨论】:

  • 请移至服务器故障或超级用户。
  • 这个问题中没有与 c++ 相关的内容

标签: linux opencv ld


【解决方案1】:

来自 ldconfig 手册页:

ldconfig 检查头文件和文件 它遇到的库的名称 在确定应该使用哪些版本时 更新他们的链接。

也许之前的 ldconfig 运行删除了该链接。

【讨论】:

  • 感谢您的回答,我不知道ldconfig。无论如何,我运行它,它并没有解决我的问题。对于我提到的库,它只是创建了一个符号链接version.subsersion -> version.subversion.patchlevel。这与处理libcv 的方式不同,在那里我找到了我期望libcvaux 的符号链接。我采取务实的方式坚持我的符号链接,并尽量记住 ldconfig 为所有其他库维护它们。
猜你喜欢
  • 2023-04-03
  • 2011-05-20
  • 2013-04-07
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多