当我们使用 gdb
调试程序时,我们通常会看到在 libc
(glibc
?)中定义了奇怪名称的函数。我的问题是:
libc/glibc
是某些标准 C/C + + 函数(如 strcpy
、 strlen
、 malloc
)的标准实现吗?open
、 close
、 fctl
这样的 Unix/Linux 系统调用的包装器?如果是这样,为什么我们不能直接发出没有 libc
的系统调用?libc
是只包含一个 lib (.a
或 .so
)文件,还是包含许多 lib 文件(在本例中,libc
是这组 lib 的通用名称) ?这些 lib 文件驻留在哪里?libc
和 glibc
有什么不同?