1.2 Les librairies statiques

Une librairie statique est "statique" dans le sens ou elle est compilée avec le programme qui en a besoin. Ces librairies ont une extension en .a par convention. En fait, pour faire simple, on peut dire que, quand on compile un programme avec une librairie statique, elle avec être copiée dans le programme final. Ce qui veut dire que l'on pourra utiliser ce programme sur un ordinateur qui n'a pas la librairie statique en question.

À mais c'est trop bien, ça veut dire que l'on à pas de problèmes de dépendances

Oui mais on contre partie le programme est plus gros, vu qu'il contient la librairie en entier.

Une autre contre partie est qu'il faut, lors du linkage du programme, mettre TOUTES (et j'ai bien dit TOUTES) les dépendances de la librairies, en plus de la librairie elle-même.

Mais, on connaît les dépendances des librairies de toute façon.

Euh, par cœur, j'en doute.

Prenons par exemple, et tout à fait par hasard, la librairie SDL, nous l'avons déjà utilisée, donc je pense que vous savez la linker à votre programme.

Ben, on à juste fait SDL SDL_image SDL_gfx.

Oui, mais ou sont les dépendances ?

Heu...

Voilà, c'est justement ce que je disais (mais CMake vous le cache, comme c'est lui que appel le compilateur) vous utiliser la librairie dynamique de SDL et pas la statique, et heureusement car dans les dépendances de la statique il y a X11 et toutes ses dépendances, ce qui donne un nombre de dépendances très important.

Tout ça pour dire que, lorsque vous utilisez des librairies système comme SDL ou OpenGl vous allez forcément utiliser les librairies dynamiques.