有一个很好的Linux数据库,我可以搜索一个函数名称,它告诉我它定义了哪个头?谷歌搜索并不总是适用于我,并不总是手册页.
使用联机帮助页
对于基本的C函数,联机帮助页应该可以工作.
man 2 read man 3 printf
第2节用于系统调用(直接到内核),第3节用于标准C库调用.你通常可以省略这个部分,而man会自己弄清楚你需要什么.
请注意,您可能需要采取额外步骤在系统上获取与开发相关的联机帮助页.例如,在我的Debian系统上,我必须这样做apt-get install manpages-dev glibc-doc
.
使用特定于库的引用
对于非基本C函数,您应该检查您正在使用的库的文档(例如,GNU的 libstdc ++ 文档,Qt的doc.qt.io,library.gnome.org的GNOME项目,如GTK,等等) .
使用网络
linux.die.net是一个很好的网页在线镜像.
LSB Navigator(如本回答所述)看起来很酷.我不知道那件事.
使用grep
有时候搜索/usr/include
自己最简单.grep适用于此,但ack要好得多.例如,如果我正在尝试查找包含getRootLogger的标头:
cd /usr/include # Debian calls 'ack' ack-grep. Your system may differ. # Add \b before and after to only match a complete word. ack-grep '\bgetRootLogger\b'
ack将返回格式良好且着色的匹配列表.
您可以将它包装在一个函数中并将其放在您的.bashrc
文件(或等效文件)中以方便使用:
function findheaderfor() { ack-grep \\b$1\\b /usr/include /usr/local/include }