linux - 查找定义 Linux 函数的位置

标签 linux

有没有适合 Linux 的良好数据库,我可以在其中搜索函数名称并告诉我它是在哪个 header 中定义的?谷歌搜索并不总是对我有用,而且并不总是有手册页。

最佳答案

使用手册页

对于基本的 C 函数,联机帮助页应该有效。

man 2 read
man 3 printf

第 2 部分用于系统调用(直接到内核),第 3 部分用于标准 C 库调用。您通常可以省略该部分,然后 man 会自行找出您需要的内容。

请注意,您可能需要采取额外的步骤才能在您的系统上获取与开发相关的联机帮助页。例如,在我的 Debian 系统上,我必须执行 apt-get install manpages-dev glibc-doc

使用库特定的引用

对于非基本的 C 函数,您应该检查您正在使用的库的文档(例如,GNU's docs 用于 libstdc++,doc.qt.io 用于 Qt,library.gnome.org 用于 GNOME 项目,如 GTK,等等) .

使用网络

linux.die.net是一个很好的网页在线镜像。

LSB Navigator (如本答案中所述)看起来很酷。我对此一无所知。

使用 grep

有时自己搜索/usr/include 最简单。 grep 适用于此,但是 ack好多了。例如,如果我试图找到包含 getRootLogger 的 header :

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
}

关于linux - 查找定义 Linux 函数的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1681278/

相关文章:

c - 使用spin_lock和spin_lock_irqsave,死锁?

linux - 禁用通配符扩展到 Bash 脚本不起作用

linux - 查找文件中的第一个重复行

c++ - 由于 libgmp.so.3,无法安装 local-build gcc-4.9.0

python - Kali Linux Python IDLE(py-2.7.10) "Cannot find any package ' 2.7.10'错误

c - 数据类型 - socklen_t、sa_family_t

linux - 在 Linux 中,如何将输入流压缩为多个输出文件?

php - 内容聚合服务策略

linux - 在 bash 中访问 Perl 数组

linux - 去除空格并将小写变为连字符 - 文件名