They all serve different purposes: * `/lib/i386-linux-gnu/libc.so.6` is a symbolic link to the 32-bit x86 C library, used to run 32-bit executables; * `/lib/x86_64-linux-gnu/libc.so.6` is a symbolic link to the 64-bit x86 C library, used to run 64-bit executables; * `/usr/lib/x86_64-linux-gnu/libc.so` is (usually) a linker script pointing to the 64-bit C library (dynamic or shared, as needed) and dynamic loader, and is used to *link* 64-bit executables (when building them).