头文件属于哪些库

which libs are a header file belongs to

OS:Debian9 Linux4.4 
Hardware:ARMv9

我怎么知道/usr/include/中的头文件属于哪个库?

例如, 构建 camera-app-gstreamer:

时出现错误
camera-app-gstreamer/xcore'
drm_display.h:30:17: fatal error: drm.h: No such file or directory
 #include <drm.h>**

我通过 apt install libdrm-dev 修复了它,安装 libdrm-dev 后,名为 drm.h 的头文件,drm*.h 出现在 /usr/include

现在,我遇到了 Make 问题,它显示:

conftest.c:29:41: fatal error: linux/atomisp.h: No such file or directory
#include <linux/atomisp.h> 

我如何找到它属于哪个库?

谢谢。

使用你的发行版的包内容搜索,在这种情况下你可以找到它here

如果通过该搜索找不到文件名,则表示没有提供它的 debian 软件包。

如果你知道文件的完整路径并且它已安装(可能在它工作的计算机上),你可以使用这个 dpkg 作弊 sheet 来找出安装它的软件包:

  • dpkg-query -W <pattern> — 列出匹配给定模式的本地已知包
  • dpkg-query -l — 列出所有本地已知的包
  • dpkg -i <packagefile> — 在给定文件中安装包
  • dpkg -r <package> — 删除给定的包
  • dpkg -S /path/to/file — 显示安装给定文件的包

如果你想知道一个文件是否安装在系统上,你可以使用locate工具。

如果您想知道哪个包会安装它,您应该安装 apt-file 工具并使用它们:

sudo apt-get install apt-file
sudo apt-file update  # will take a while but needs not to be repeated often
apt-file search drm.h

这将列出您的包管理系统知道的包,其中包含一个文件,该文件作为名称的一部分。您可以追加 | grep '/drm.h$' 以仅查找完全具有此文件的文件。