Una
unidad de biblioteca puede ser una especificación de
subprograma∞ o una especificación de
paquete∞; a los cuerpos correspondientes se les denomina unidades secundarias. Se puede compilar especificación y cuerpo juntos, pero es conveniente hacerlo separadamente con el fin de mejorar la accesibilidad y el mantenimiento de los programas.
Cuando se compila una unidad, ésta se almacena dentro de
la biblioteca de programas∞. Una vez que se incluye en la biblioteca, una unidad puede ser usada por cualquier otra unidad que se compile a continuación, esta dependencia se indica con la
cláusula with∞.
Si el cuerpo de un subprograma es por sí mismo suficiente para definir un subprograma completo. Es entonces cuando se le clasifica como una unidad de biblioteca, en vez de tratarlo como una
subunidad∞.
Si la especificación y el cuerpo se compilan por separado, entonces, el cuerpo debe compilarse después de la especificación, es decir, el cuerpo es dependiente de la especificación. Sin embargo, toda unidad que utilice el paquete es dependiente únicamente de la especificación, aspecto destacable de Ada. Con ello, aunque cambie el cuerpo del paquete, si no se cambia la especificación (interfaz con el exterior), no es necesario volver a recompilar las unidades que estaban utilizando dicho paquete. Se puede apreciar que la compilación separada de especificación y cuerpo simplifica el mantenimiento de los programas.
Como es obvio, las unidades de biblioteca no pueden sobrecargarse ni pueden ser operadores.
Manual de referencia de Ada