当使用 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
,这也不起作用。专家是如何解决这个问题的。他们只是知道所有的图书馆名称吗?
最佳答案
它叫包名您使用什么作为 pkg-config 的主要参数,然后应用 --cflags 或 --libs 等,只需访问在 pkg-config search paths 中找到的相应包配置文件([some_package_name].pc,又名 pkg-config 元数据文件)中指定和评估的参数。 .
是的,没有规则包名称与库名称的关系。通常它是没有 的库名库- 前缀或只是整个库名称。我在 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
关于compilation - 你怎么知道库名是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48756209/