当使用像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
,这也是行不通的。
专家如何解决这个问题。他们只是知道所有的图书馆名称吗?
答案 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