Tutto ciò che è statico viene allocato durante la compilazione, mentre ciò che è dinamico viene allocato a runtime.
Quindi le librerie dinamiche dovrebbero essere "consultate" a runtime.Nel senso che se durante l' esecuzione del programma viene eseguita la printf, si cerca nel file system l' header stdio.h per andare a "pescare" la funzione.
Mi chiedo allora come fa il programma ad essere portabile, se ad esempio sposto il programma dal computer nel quale ho compilato il programma, ad un altro computer con la stessa architettura, ma senza GCC installato (nel caso usi windows), il programma spostato sull' altro computer funziona o no?
Perchè quando va a cercare le funzione dovrebbe non trovarle, non essendoci gli header che cerca.Non sarebbe portabile, eppure i programmi in C sono portabili,potete chiarirmi questa cosa?