我想看看ns_initparse(),res_search()等函数的来源。我在哪里可以找到它们?
答案 0 :(得分:5)
以下是我找到res_search
的来源的步骤。
$ man res_search
我在那个手册页中看到:Link with -lresolv
$ ls /usr/lib/libresolv*哎呀,没什么。 Where else do we look?怎么样:
$ ls /lib/libresolv* /lib/libresolv-2.7.so /lib/libresolv.so.2
大。现在what package is that from?
$ rpm -qf /lib/libresolv-2.7.so glibc-2.7-2
阿。它在glibc
。现在,有两种选择。我可以获取源RPM,并查看这些内容,以获得构建我的系统的确切版本,但that's a bit complicated to set up。
如果您不需要自己构建的确切源RPM,则可以查看[上游](http://en.wikipedia.org/wiki/Upstream_(software_development))源代码。只需查看glibc
site即可找到{ {3}},然后开始浏览。
$ 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);
你有它!
如果您安装了source code,那么您可以克隆git repo,而不仅仅是下载tar包,并查看它。这样,您还可以查看过去或未来的任何版本,看看它是如何随时间变化的。
$ 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);
答案 1 :(得分:1)
我不确定你是否对Fedora特定内容感兴趣,但我很幸运Google Code Search找到某些功能的源代码。