Hola, permitanme disentir en algunos conceptos.
Las librerías se usan para funciones muy concretas y repetitivas, sino carecen de sentido. Pero 'existen'.
Las librerias se utilizan para "modularizar" y tambien facilitar el proceso de linkeo.
La modularización consiste en agrupar funcionalidad, ejemplo manejo de strings, etc, facilitar el proceso de linkeo, consiste en vez de estar incluyendo muchisimos archivos solo incluir el archivo de libreria correspondiente.
Si usas C18, alguna vez habrás usado un
#include <stdlib.h>
Pues bien, al hacer eso no estas leyendo el .h en realidad estás leyendo un stdlib.lib que dentro tiene el stdlib.h y todos los .c que componen la librería
Esto que logra? agilizar el proceso de compilación, se hace cientos de veces más rápido.
Un compilador C realiza basicamente 2 tareas:
1. Preprocesado, donde todos los archivos H y C son pegados en un solo archivo, las macros y los define son reemplazados por sus respectivos valores.
2. Ensamblado de este archivo, donde el compilador va traduciendo cada estructura C en su correspondiente codigo ASM
Cuando incluis un archivo header, lo que haces es instruir al compilador en macros, constantes (defines) y lo mas importante, prototipo de funciones, esto es avisarle al compilador como son los parametros, cual es el valor que retorna, y mas importante cual es el convenio de llamada que usa la funcion en si. El compilador propiamente dicho nunca sabes nada archivos lib.
El linker es el que toma todos los archivos compilados ( objetcs ) y los linkea en una imagen final, el input del linker son estos objects y aca si los archivos de libreria correspondientes.
Saludos !