Como dice Ignacio, los archivos .a son bibliotecas estáticas. La "a" significa "archivo" y los archivos .a son construidos por un programa llamado "ar".
Cada archivo .a contiene uno o más archivos .o y un índice de nombres. Durante el proceso de enlace, solo los archivos .o que contienen nombres usados se incluyen en el programa final. Esto es para que, en lugar de incluir toda la biblioteca C, solo se copien las funciones utilizadas como "printf".
¿Cómo encuentra el compilador las bibliotecas? Tiene una colección integrada de rutas de biblioteca que se buscan. A modo de ejemplo, GCC le dirá sus rutas de búsqueda si se les pregunta:
# gcc -print-search-dirs
install: /usr/lib/gcc/i686-redhat-linux/4.4.4/
programs: =/usr/libexec/gcc/i686-redhat-linux/4.4.4/:/usr/libexec/gcc/i686-redhat-linux/4.4.4/:/usr/libexec/gcc/i686-redhat-linux/:/usr/lib/gcc/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/:/usr/libexec/gcc/i686-redhat-linux/4.4.4/:/usr/libexec/gcc/i686-redhat-linux/:/usr/lib/gcc/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../i686-redhat-linux/bin/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../i686-redhat-linux/bin/
libraries: =/usr/lib/gcc/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../i686-redhat-linux/lib/i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../i686-redhat-linux/lib/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../i686-redhat-linux/4.4.4/:/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../:/lib/i686-redhat-linux/4.4.4/:/lib/:/usr/lib/i686-redhat-linux/4.4.4/:/usr/lib/
puede agregar más rutas de búsqueda de la biblioteca mediante la opción "-L/ruta".
En esas rutas, primero busca "bibliotecas dinámicas" que se nombran con una extensión ".so". Luego busca bibliotecas estáticas con una extensión ".a". Siempre agrega "lib" al frente del nombre.
Genial. Con su pregunta, ya había respondido a mi pregunta: "¿Qué-estoy parado en la línea de comando del compilador de c?" – NilsB