C 如何在linux中查找库函数要包含的头文件

C 如何在linux中查找库函数要包含的头文件,c,linux,C,Linux,给定一个函数,比如说atoi,如果我想使用这个函数,如何找到应该包含的头文件?我总是对那个问题感到困惑。如果让我把像“atoi”这样的函数当作linux c api,我可以用另一种方式提出我的问题:是linux c api的文档吗 。在命令提示下键入man-atoi(或者通常键入man)。它将为您提供使用信息以及要包含的标题列表 手册页还记录程序和命令(查找、grep、cd等)。有时,您可能会遇到一个程序与C函数同名的情况(例如write)。在这种情况下,您需要指导man查看手册的正确部分,第2

给定一个函数,比如说atoi,如果我想使用这个函数,如何找到应该包含的头文件?我总是对那个问题感到困惑。如果让我把像“atoi”这样的函数当作linux c api,我可以用另一种方式提出我的问题:是linux c api的文档吗

。在命令提示下键入
man-atoi
(或者通常键入
man
)。它将为您提供使用信息以及要包含的标题列表

手册页还记录程序和命令(查找、grep、cd等)。有时,您可能会遇到一个程序与C函数同名的情况(例如write)。在这种情况下,您需要指导man查看手册的正确部分,第2部分查看系统调用,第3部分查看库函数。您可以通过在“man”和命令名之间插入节号:
man2 write
。如果不知道给定函数是系统调用还是库函数,请同时尝试这两种方法

您可以通过键入
man

了解有关手册页的更多信息。是否有针对linux c api的文档?
当然可以。该文档作为手册页提供。在终端中键入
man
,然后享受。您需要包含的头文件通常显示在顶部。

如果您正在使用ctags和vim编辑器,并且您已将ctags设置为扫描/usr/include,那么在使用要查找的函数时,ctrl-]会将您带到头文件

您也可以使用以下命令

whereis <function name> 
在哪里
它将给出函数的路径名。然后使用vim编辑器打开路径。然后使用“vim”编辑器可以看到头文件

范例

> whereis atoi 
   atoi: /usr/share/man/man3/atoi.3.gz

 > vim /usr/share/man/man3/atoi.3.gz

   ----------
   ----------
  .B #include <stdlib.h>
>原子在哪里
atoi:/usr/share/man/man3/atoi.3.gz
>vim/usr/share/man/man3/atoi.3.gz
----------
----------
.B#包括

或者,您可以在系统的/usr/include目录中搜索要查找的函数定义。这对于缺少手册页的嵌入式或精简linux系统尤其有用

find /usr/include -name "*.h" -print | xargs grep "<function-you-are-looking-for>"
你会得到这样的结果:

/usr/include/stdlib.h:extern int atoi (__const char *__nptr)
结果包含头文件名和接口定义

  • 请注意,您的/usr/include目录可能位于其他位置

请参见手册或信息和apropos,其中apropos为您提供了要使用的手册页部分。+1旁注:在某些平台上,您可能需要安装这些软件包(例如,对于ubuntu
manpages-posix-dev
(标题)和
manpages-dev
(函数)),还请注意,许多内容是在特定于系统的,(有时是内核版本特定的)私有头文件,这些头文件由公共头文件包含,因此通过grep搜索不一定能得到正确答案。如上所述,过于复杂。
/usr/include/stdlib.h:extern int atoi (__const char *__nptr)