Table of Contents
Binutils are a set of low-level programs like assembler, linker, disassembler, ... It's their task to create and manipulate binary executable files.
GCC is the "main" actor when compiling programs. It's the compiler who translates your C, C++, ..., program source code into architecture-specific assembler instructions, which are then build up to an executable by GNU binutils.
Glibc is a large blob of glue code, which tries to give it's best to hide kernel specific functions from you. You simply use always-the-same functions like read() etc., and glibc translates it to something the kernel can execute.
This way, you can do portable programming by only using libc calls, not (specific) kernel calls.