L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi.

— Edsger Wybe Dijkstra

Librerie statiche e dinamiche in ambiente Linux

Una delle caratteristiche meno usate delle librerie dinamiche è la possibilità di linkarle ad un processo in ogni istante del proprio ciclo di vita. Il metodo di linking mostrato nella pagina precedente rende la libreria dinamica caricabile dal dynamic loader di sistema.

Oltre a ciò è possibile realizzare un’operazione di linking in ogni istante tramite la libreria dl. Questa libreria consente di caricare una libreria dinamica, far riferimento ai simboli in essa definiti, chiamare alcune delle sue funzioni e infine staccarla dal processo quando non è più necessaria.

Un possibile scenario in cui ci si potrebbe trovare potrebbe essere la scrittura di un’applicazione che necessiti la lettura di dieci file con formato diverso in una singola esecuzione; il codice potrebbe essere organizzato come se solo uno o due di questi formati di file fossero necessari. Sarebbe possibile scrivere una libreria dinamica per ciascun formato, ciascuna con la stessa interfaccia (ad esempio readfile e writefile), e una porzione di codice che determini il formato del file. In questo modo, quando il programma richiede di aprire un file, prima verificherà il suo formato, poi caricherà la libreria dinamica relativa che consente di leggere e scrivere quel formato, e poi chiamerà il readfile per leggere il file.

Sarebbe possibile avere dieci librerie di questo tipo, ma solo una di esse sarebbe posizionata in memoria in un dato istante di tempo, consentendo alla nostra applicazione di usare meno risorse di sistema. In tal modo sarà possibile anche cominciare a sviluppare l’applicazione con un piccolo insieme di formati di file supportati, e aggiungere nuovi formati di file senza la necessità di modificare l’intera applicazione ma semplicemente aggiungendo qualche riga di codice per il riconoscimento del formato e il linking alla nuova libreria dinamica creata per il nuovo formato supportato.

Vedremo ora come realizzare quanto esposto qui tramite l’ausilio della libreria dl con esempi pratici di applicazione.