Ma Linux utilizza le shared libraries, i file .so
Esatto,conferma che le .dll esistono solo in windows.
Sono strutturalmente diverse anche se il loro scopo è il medesimo.
es. "include<mialib.h>" riesce a linkare la libreria statica
No forse mi sono espresso male.
Cerco di semplificare una cosa assai complessa:
Quando scrivi il codice tu puoi scriverlo su piu file e adirittura su piu librerie,quando però il compilatore analizza un file.c come fa a sapere se quella funzione esiste oppure no?
Semplice non lo sa almeno che tu non lo dica esplicitamente con un prototipo di funzione,ovvero informi il compilatore che quella funzione esiste in un'altra parte del codice,il compilatore cortesemente risponde senza darti nessun errore.
Quando poi si hanno diversi prototipi e quant'altro un programmatore può decidere di infilarli dentro un header,questo serve a semplificare la scrittura del codice e a non dover scrivere ogni volta gli stessi prototipi in ogni file.c,ma semplicemente includeremo l'header.
Cosa succede se la funzione non è in un file.c ma è in una libreria? il compilatore darebbe errore se usiamo una funzione che è stata prototipizzata ma che non esiste.
Qui entra in gioco il linker,noi gli diamo in pasto un file .a o .lib(non tramite include ma dando il percorso della libreria.a) e lui lo ingloba nel progetto le funzioni mancanti cosi il compilatore è felice e contento di trovare tutti sti biscottini che preso dall'emozione si dimentica di scatenare l'ira funesta degli errori.
Riassumendo quando crei una libreria dinamica ti serviranno tre file la .dll , la .a e il .h
Il .h serve per il codice non c'è bisogno quindi di ricompilare la libreria se modifichi solo ed esclusivamente tale file.
Il .a serve per linkare la libreria se modifichi codice della libreria allora dovrai ricompilarla.
La .dll è la reale libreria che verrà caricata nel momento dell'avvio del programma.
Nelle statiche non hai bisogno della .dll perchè il codice viene inglobato all'interno del tuo .exe quindi il file exe ha già tutto quello necessario per essere eseguito.
Discorsi cosi complicati però è meglio studiarli sui libri perchè sono difficili da trattare sui forum.