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

本文介绍在Windows环境下快速定位C库函数源码的方法,以GNU glibc为例,展示了如何找到printf等函数的源码文件,并提供了在Windows和Linux系统下的命令行操作技巧。

虽然一直在写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源码非常方便。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值