C库源代码阅读(快速定位源码)

虽然一直在写Java,看了些Java类库源码之后,对一直感兴趣的C库源代码也想探索一下。倒腾了一下,在windows下终于解决了如何快速定位自己想看的C函数源码文件的方法,也有一点小收获,终结如下:

1、这里说的C库源代码是GNU glibc,网址:

http://ftp.gnu.org/gnu/glibc/
2、平时调用的C函数,在源码中是以单独文件的形式存在。例如,printf函数路径
..\glibc-2.20\stdio-common\printf.c
代码如下:
#include <libioP.h>
#include <stdarg.h>
#include <stdio.h>

#undef printf

/* Write formatted output to stdout from the format string FORMAT.  */
/* VARARGS1 */
int
__printf (const char *format, ...)
{
  va_list arg;
  int done;

  va_start (arg, format);
  done = vfprintf (stdout, format, arg);
  va_end (arg);

  return done;
}

#undef _IO_printf
ldbl_strong_alias (__printf, printf);
/* This is for libg++.  */
ldbl_strong_alias (__printf, _IO_printf);

这里需要说明的是源码中的printf函数前面有一个下划线,这是为了执行时方便被汇编语言调用。

3、在windows下快速定位C函数源码文件方法:

dir C:\Users\...(glibc源文件存放路径)\glibc-2.20 /s /b | find "printf.c"
执行结果如下(片段):
C:\Users\zhoujw\Desktop\glibc-2.20\glibc-2.20\stdio-common\printf.c
C:\Users\zhoujw\Desktop\glibc-2.20\glibc-2.20\stdio-common\reg-printf.c
C:\Users\zhoujw\Desktop\glibc-2.20\glibc-2.20\stdio-common\snprintf.c
C:\Users\zhoujw\Desktop\glibc-2.20\glibc-2.20\stdio-common\sprintf.c
C:\Users\zhoujw\Desktop\glibc-2.20\glibc-2.20\stdio-common\test-vfprintf.c

在Linux shell下同样有find命令。

4、听说windows下看源代码用source insight,正在学习,有经验者还请多指教。在Linux下采用sublime text和ctags配合,阅读C源码非常方便。


你可能感兴趣的:(C库源码阅读)