Programmare in C con Linux - Le fasi della compilazione di un programma C

bitPortal.it: Programmazione Hardware e Software



 Programmazione
Visual Basic.NET
Visual C++
LabView
C/C++ con Linux
Tcl/Tk
Bash
HTML
Javascript
Sicurezza

 Collegamenti    esterni
Centinaia di Giochi Gratis ai quali Giocare Online
 Giochi Gratis

Settore Finanza: Guida al Trading Online
 Guida Trading Online

Settore Finanza: Guida Prestiti e Finanziamenti
 Guida Prestiti e Finanziamenti

Tutorial e articoli su Php, Xml, AJjax,VoIP ..
 WebSpazio.it

Articoli riguardanti il tema del lavoro da casa
 lavorare da casa

Tutorial sul web hosting + Articoli riguardanti il tema dell' hosting di siti web
  Hosting Sito Web

Inviaresmsgratis.it si propone come bussola per tutti gli utenti che sono alla ricerca di siti internet per inviare sms gratis.
  SMS Gratis

Directory in cui segnalare il vostro sito gratis
    Directory

Guida alla zoologia e alle specie animali
    Zoologia




  Programmazione - C/C++ con Linux



Programmare in C con Linux



Le fasi della compilazione di un programma C


Prendiamo in esame il programma scritto nella lezione precedente:
/* 
   hello.c 
   Primo programma C - Questo programma scrive sullo stdout 
   la stringa "Hello World"
*/

#include <stdio.h>
 
int main(void)
{
  printf("Hello World\n");
}

Come abbiamo gi detto il processo di compilazione pu comprendere fino a quattro stadi distinti:
  • Fase di preprocessing
  • Compilazione vera e propria
  • Assemblaggio
  • Linking

In questa lezione compileremo il programma, cio produrremo il file binario partendo dal file sorgente bloccandoci alla fine di ogni fase di compilazione.

Il processo di compilazione riceve in ingresso il file hello.c, questo file viene elaborato dallo stadio di preprocessing.

  • Fase di preprocessing

  • Il primo stadio della fase di compilazione lo stadio di preprocessing. Questo stadio riceve in ingresso il file hello.c produce in uscita il file hello.cpp. In questa fase vengono espanse le macro e viene inserito il contenuto dei file di #include.
    Esaminiamo nel dettaglio come gcc produce hello.cpp. Per fermare la compilazione dopo la fase di preprocessing usiamo l'opzione -E di gcc:
    $ gcc -E hello.c -o hello.cpp
    
    Se andiamo ad esaminare hello.cpp osserviamo che il contenuto di stdio.h stato effettivamente incluso nel file insieme alle direttive di preprocessing.

  • Compilazione vera e propria
  • In questo stadio avviene la compilazione vera e propria. Il file di ingresso hello.cpp proveniente dalla fase di compilazione viene compilato in uscita da questa fase viene prodotto il file oggetto hello.o Per svolgere questa fase dobbiamo dire a gcc:
    1. di prendere il codice gi preprocessato (usiamo l'opzione -x cpp-output, significa "inizia la compilazione dall'operazione indicata, in questo caso dal codice sorgente preprocessato)
    2. di compilarlo (usiamo l'opzione -c significa "compila il file che segue l'opzione")
    3. di produrre il codice oggetto (usiamo l'opzione -o con questa opzione specifichiamo il nome del file oggetto")
    La riga completa :
    $ gcc -x cpp-output -c hello.cpp -o hello.o
    


  • Linking
  • Sucessivamente alla fase di compilazione c' la fase di linking. Il linker, ld, crea il file binario hello.
    Per ottenere il file binario dal file oggetto facciamo fare la fase di linking a gcc:
    $ gcc hello.o -o hello
    
    Abbiamo ottenuto il nostro file binario passando per le varie fasi di compilazione!