你怎么知道库名是什么

时间:2018-02-12 21:59:27

标签: compilation linker shared-libraries pkg-config

当使用像pkg-config这样的工具(参见here)时,如何知道库名应该是什么?它并不总是直观的。例如,DLIB不适用于

  • pkg-config --cflags dlib
  • pkg-config --cflags libdlib
  • pkg-config --cflags dlib-19.9

我通常必须发出像sudo ldconfig -p | grep dlib这样的命令,但所有这一切都是返回libdlib.so,这也是行不通的。

专家如何解决这个问题。他们只是知道所有的图书馆名称吗?

1 个答案:

答案 0 :(得分:1)

包名称称为pkg-config的主要参数,然后应用 - cflags - libs 等,只需访问在相应的包配置文件([some_package_name] .pc,又名 pkg-config元数据文件)中指定和评估的参数pkg-config search paths

是的,没有规则包名称与库名称的关系。通常,它的库名称不包含 lib - 前缀,或者只是整个库名称。我在pkg-config guide中找到了以下内容:

  

常见的选择是将库名称与.pc名称相匹配。   例如,安装libfoo.so的软件包会有一个   相应的包含pkg-config元数据的libfoo.pc文件。这个   选择没有必要; .pc文件应该只是一个唯一的   您的图书馆的标识符。按照上面的例子,foo.pc或   foolib.pc可能也会起作用。

但是,您可以列出pkg-config搜索路径中的所有可用内容,并在Makefile中使用它们之前找出正确的名称:

$ pkg-config --list-all | grep dlib