compilation - 你怎么知道库名是什么

标签 compilation linker shared-libraries pkg-config

当使用 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/

    相关文章:

    c++ - 奇怪的链接错误

    c++ - 在 C++ 中为 OS X 分发动态库

    jar - Java编译器多平台

    在 C 中编译具有自己头文件的文件

    vb.net - 条件编译常数VB

    c - 使用非标准名称链接 C 库

    Python dlopen/dlfunc/dlsym 包装器

    Java如何在使用命令行编译时添加库或API?

    linux - 关于 GCC 链接器搜索顺序的一些问题

    c - Xilinx SDK 中对 dlopen.dlsym、dlclose 的 undefined reference