Cette description semble assez claire :http://sourceware.org/binutils/docs/binutils/ranlib.html
Ainsi, si vous archivez une collection de fichiers objets, dites :
$ ar r fruits.a apple.o orange.o pineapple.o
Puis en cours d'exécution
$ ranlib fruits.a
crée un index du contenu de fruits.a et stocke l'index dans fruits.a. Ceci est utile pour lier et au cas où les objets s'appellent.
ranlib
ajoute ou met à jour des fichiers objets dans une bibliothèque statique. Les éditeurs de liens peuvent utiliser des bibliothèques statiques lors de la liaison afin de fournir des symboles dont le code a besoin pour fonctionner (par opposition au chargeur qui les recherche dans des bibliothèques dynamiques lors de l'exécution de l'exécutable).
ranlib génère un index du contenu d'une archive et le stocke dans l'archive. L'index répertorie chaque symbole défini par un membre d'une archive qui est un fichier objet relocalisable. Une archive avec un tel index accélère la liaison à la bibliothèque et permet aux routines de la bibliothèque de s'appeler sans tenir compte de leur emplacement dans l'archive.
source :page de manuel de ranlib