查看名称空间解析器函数linux fedora的源代码

avd*_*avd 0 linux

我想看看像ns_initparse(),res_search()等函数的来源.我在哪里可以找到它们?

Bri*_*ell 5

以下是我找到源代码的步骤res_search.

$ man res_search

我在那个手册页中看到: Link with -lresolv

$ ls /usr/lib/libresolv*

糟糕,没有.我们还在哪里看?怎么样:

$ ls /lib/libresolv*
/lib/libresolv-2.7.so  /lib/libresolv.so.2

大.现在什么包是从

$ rpm -qf /lib/libresolv-2.7.so
glibc-2.7-2

啊.它在glibc.现在,有两种选择.我可以获取源RPM,并查看这些,以获得我的系统构建的确切版本,但设置有点复杂.

如果您不需要从中构建的确切源RPM,则可以查看[upstream](http://en.wikipedia.org/wiki/Upstream_ ( software_development))源代码.只需浏览glibc网站以查找源代码,然后开始查看.

$ curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.7.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 20.2M  100 20.2M    0     0  12.3M      0  0:00:01  0:00:01 --:--:-- 12.8M
$ tar xzf glibc-2.7.tar.gz
$ cd glibc-2.7
$ find . -name "*.c" | xargs grep res_search
./resolv/res_data.c:res_search(const char *name, /* domain name */
./resolv/res_data.c:# undef res_search
./resolv/res_data.c:weak_alias (__res_search, res_search);

你有它!

如果您安装了Git,而不是只下载tarball,您可以克隆git repo,并查看它.这样,您还可以查看任何过去或未来版本,以了解它是如何随时间变化的.

$ git clone git://sourceware.org/git/glibc.git
$ cd glibc
$ git checkout glibc-2.7
$ git grep res_search 
resolv/res_data.c:res_search(const char *name,  /* domain name */
resolv/res_data.c:# undef res_search
resolv/res_data.c:weak_alias (__res_search, res_search);