你怎么知道图书馆的名字是什么

How are you supposed to know what library names are

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

我通常必须发出像 sudo ldconfig -p | grep dlib 这样的命令,但它所做的只是 return libdlib.so,这也不起作用。

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

它叫做package name你正在使用的作为pkg-config的主要参数,然后应用--cflags或者--libs,等等,只需访问相应的 包配置文件 指定和评估的参数([some_package_name].pc, a.k.a pkg-config 元数据文件) 在 pkg-config search paths.

中找到

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

A common choice is to match the library name to the .pc name. For instance, a package installing libfoo.so would have a corresponding libfoo.pc file containing the pkg-config metadata. This choice is not necessary; the .pc file should simply be a unique identifier for your library. Following the above example, foo.pc or foolib.pc would probably work just as well.

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

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