what the role of libc(glibc) in our linux app?
===

when we debug program use gdb,we usuallay see functions with strange names defined in libc(glibc?),my question is:
1. is libc/glibc the standard implementation of some standard c/c++ function like "strcpy","strlen","malloc"?
2. or,it is not only of the first usage as described above,but also an wrapper of unix/linux system call api like "open","close","fctl"? if so,why can not us call the system api functions directly without libc ?
3. does libc only consist of one lib (.a or .so) file,or many a lib file(in this case,libc is the general name of this set of lib),where do these lib file(s) reside?
4.what the difference between libc and glibc?