$ cat bonjour.c
#include <stdio.h>
int main(){
fprintf(stdout, "bonjour");return0;}
$ gcc -o bonjour_dyn bonjour.c
$ ldd bonjour_dyn
linux-vdso.so.1 (0x00007ffd071a9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f33a5de3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f33a5fdc000)
$ ls -nhl bonjour_dyn
-rwxr-xr-x 110001000 17K janv. 2020:20 bonjour_dyn
$ /sbin/ldconfig --help
Usage : ldconfig [OPTION...]
Configuration dynamique des éditions de liens lors de l'exécution.
$ gcc -static -o bonjour_sta bonjour.c
$ ldd bonjour_sta
n'est pas un exécutable dynamique
$ ls -nhl bonjour_sta
-rwxr-xr-x 110001000 738K janv. 2020:21 bonjour_sta
Dans le premier cas, la fonction est fournie dynamiquement. Dans le second cas, elle est embarquée dans le binaire. Avec des conséquences sur la taille du binaire, la disponibilité de la bibliothèque à l'exécution, la possibilité de remplacer cette bibliothèque pour correction ou par malveillance, etc.
# Dynamique vs statique
Posté par Benoît Sibaud (site web personnel) . En réponse au message probleme pour comprendre l'édition de lien. Évalué à 7. Dernière modification le 20 janvier 2019 à 20:34.
Dans le premier cas, la fonction est fournie dynamiquement. Dans le second cas, elle est embarquée dans le binaire. Avec des conséquences sur la taille du binaire, la disponibilité de la bibliothèque à l'exécution, la possibilité de remplacer cette bibliothèque pour correction ou par malveillance, etc.
Pour aller plus loin (mais ça devient plus technique), une discussion twitter récente #prod365 #fr Un peu de #linux #internals: quels sont les mécanismes du #kernel pour lire et executer un programme?