Compilation 你怎么知道库名是什么

Compilation 你怎么知道库名是什么,compilation,linker,shared-libraries,pkg-config,Compilation,Linker,Shared Libraries,Pkg Config,当使用pkg config(请参阅)这样的工具时,如何知道库名称应该是什么?这并不总是直观的。例如,DLIB不适用于 pkg配置--cflags dlib pkg配置--cflags libdlib pkg配置--cflags dlib-19.9 我通常必须发出一个命令,比如sudoldconfig-p | grepdlib,但所做的只是返回libdlib.so,这也不起作用 专家们如何解决这个问题。他们只知道所有的库名吗?它被称为包名,您正在使用它作为pkg config的主要参数,然后应

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

  • pkg配置--cflags dlib
  • pkg配置--cflags libdlib
  • pkg配置--cflags dlib-19.9
我通常必须发出一个命令,比如
sudoldconfig-p | grepdlib
,但所做的只是返回
libdlib.so
,这也不起作用


专家们如何解决这个问题。他们只知道所有的库名吗?

它被称为包名,您正在使用它作为pkg config的主要参数,然后应用--cflags--libs等,您只需访问相应的包配置文件([some\u package\u name]中指定和评估的参数即可.pc,也称为pkg配置元数据文件),在中找到

是的,没有关于包名与库名之间关系的规则。通常是不带lib-前缀的库名,或者只是整个库名。我发现以下几点:

常见的选择是将库名称与.pc名称匹配。 例如,安装libfoo.so的包将具有 包含pkg config元数据的对应libfoo.pc文件。这 选择是没有必要的;.pc文件应该是唯一的 库的标识符。按照上述示例,foo.pc或 傻瓜ib.pc可能也能正常工作

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

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