你怎么知道图书馆的名字是什么
How are you supposed to know what library names are
当使用像 pkg-config(参见 here)这样的工具时,人们应该如何知道库名称应该是什么?它并不总是直观的。例如,DLIB 不适用于
pkg-config --cflags dlib
pkg-config --cflags libdlib
pkg-config --cflags dlib-19.9
我通常必须发出像 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
当使用像 pkg-config(参见 here)这样的工具时,人们应该如何知道库名称应该是什么?它并不总是直观的。例如,DLIB 不适用于
pkg-config --cflags dlib
pkg-config --cflags libdlib
pkg-config --cflags dlib-19.9
我通常必须发出像 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