Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Capitolo 14<br />
Le librerie<br />
Le librerie contengono codice e dati, cioè funzioni globali e variabili globali, che possono<br />
essere riutilizzati in diversi programmi. Molte funzioni usate dai programmi C sono state<br />
standardizzate, così come i nomi degli header da includere prima di usarle. Abbiamo quindi<br />
<strong>per</strong> lavorare con i file, <strong>per</strong> poter chiamare le funzioni relative alle stringhe<br />
(lunghezza, confronto, sottostringa, ...) e moltissimi altri header.<br />
Lo scopo del corso non è quello di prendere confidenza con la molteplicità di funzioni della<br />
libreria standard o di altre librerie. Le librerie a disposizione del compilatore sono tantissime<br />
e coprono molte delle funzionalità più comunemente richieste. In questo documento sono state<br />
già utilizzate delle funzioni di libreria come printf o malloc. Nonostante l’analisi delle librerie<br />
standard non sia l’obiettivo della trattazione, alcune librerie contengono funzioni che verranno<br />
descritte nel dettaglio anche in questa sede, in quanto implementano funzionalità che sono<br />
ritenute importanti in ogni contesto applicativo. In generale, tutte le funzioni e le variabili globali<br />
maggiormente utilizzate (come stdin e stdout) sono contenute nella libreria C, la cosiddetta<br />
libc, che viene usata automaticamente dal compilatore <strong>per</strong> risolvere i simboli non definiti nei<br />
file sorgente. Il compilatore può disporre anche di una sua propria libreria (<strong>per</strong> esempio libgcc),<br />
contenente procedure chiamate dal codice oggetto generato dal compilatore stesso. Anche questa<br />
libreria viene inclusa automaticamente durante la fase finale di compilazione.<br />
14.1 Uso di librerie esterne<br />
Dal momento che molte funzioni sono incluse nelle librerie standard, il programmatore non è<br />
tenuto a fornire alcuna informazione aggiuntiva al compilatore e al linker riguardo l’utilizzo di tali<br />
librerie, in quanto il compilatore le include automaticamente. Se <strong>per</strong>ò è necessario utilizzare una<br />
funzione che è inclusa in una libreria non standard, bisogna esplicitamente istruire il compilatore<br />
riguardo <strong>alla</strong> libreria che contiene la funzione.<br />
Le librerie sono tipicamente memorizzate in file aventi estensione “.a”, dette librerie statiche 1 .<br />
Le librerie statiche sono create a partire dai file oggetto “.o” <strong>per</strong> mezzo del programma ar, e sono<br />
usate dal linker <strong>per</strong> risolvere i riferimenti alle funzioni al momento della compilazione.<br />
Le librerie standard del C sono solitamente poste nella directory /usr/lib e /lib. Per<br />
esempio, la libreria matematica del C è tipicamente memorizzata nel file /usr/lib/libm.a. Le<br />
dichiarazioni dei prototipi delle funzioni si trovano nei relativi file di intestazione, che si trovano di<br />
solito nella directory /usr/include. Per esempio, il file di intestazione della libreria matematica<br />
1 Esistono anche le cosiddette librerie dinamiche, ma la loro trattazione va oltre gli scopi di queste dispense.<br />
136