Fondamenti di Programmazione

Linux/Windows/Mac OS X - gcc

Per prima cosa ci occorre un text editor o meglio ancora un source code editor per scrivere il programma in linguaggio C. Ad esempio, possiamo usare JEdit che è disponibile per tutte e tre le piattaforme Linux, Windows e Mac OS X. Il nostro primo programma semplicemente stampa a video la stringa "Dennis Ritchie invento' il Linguaggio C":

#include <stdio.h>

int main() {
    printf("Dennis Ritchie invento' il Linguaggio C\n");
    return 0;
}

Salviamo il programma in un file di nome primo.c. Supponiamo di aver creato il file in una directory di nome C_PROG. Per la compilazione tramite gcc ci sono delle piccole differenze tra Windows e le altre due piattaforme.
Linux e Mac OS X
Apriamo una finestra di terminale (Terminal) e posizioniamoci (tramite il comando cd) nella directory C_PROG che contiene il file primo.c. Se adesso eseguiamo il comando ls dovremmo vedere sul terminale qualcosa del genere:
rik@computer:~/C_PROG$ ls
primo.c
rik@computer:~/C_PROG$
Ora compiliamo il programma:
rik@computer:~/C_PROG$ gcc primo.c
rik@computer:~/C_PROG$
Il comando gcc compila ed esegue il linking del programma primo.c e se non ci sono errori ritorna senza messaggi. L'eseguibile è stato creato in un file di nome a.out (questo è il nome di default che come vedremo può essere cambiato). Se ora eseguiamo un ls otteniamo:
rik@computer:~/C_PROG$ ls
a.out		primo.c
rik@computer:~/C_PROG$
Per eseguire a.out si scrive:
rik@computer:~/C_PROG$ ./a.out
Dennis Ritchie invento' il Linguaggio C
rik@computer:~/C_PROG$
Se vogliamo che l'eseguibile sia creato in un file con un nome diverso da a.out, ad esempio primo, basterà scrivere:
rik@computer:~/C_PROG$ gcc primo.c -o primo
rik@computer:~/C_PROG$
Dopo di ciò se eseguiamo un ls e poi eseguiamo il programma ottteniamo:
rik@computer:~/C_PROG$ ls
a.out		primo		primo.c
rik@computer:~/C_PROG$ ./primo
Dennis Ritchie invento' il Linguaggio C
rik@computer:~/C_PROG$
Windows
Ricordiamo che gcc non è disponibile di default sotto Windows ed è quindi necessario istallarlo. Questo può essere fatto istallando MinGW.
Apriamo il Prompt dei comandi e posizioniamoci (tramite il comando cd) nella directory C_PROG che contiene il file primo.c. Se adesso eseguiamo il comando dir dovremmo vedere sulla finestra qualcosa del genere:
C:\Documents and Settings\rik\C_PROG>dir /b
primo.c

C:\Documents and Settings\rik\C_PROG>
Ora compiliamo il programma:
C:\Documents and Settings\rik\C_PROG>gcc primo.c

C:\Documents and Settings\rik\C_PROG>
Il comando gcc compila ed esegue il linking del programma primo.c e se non ci sono errori ritorna senza messaggi. L'eseguibile è stato creato in un file di nome a.exe (questo è il nome di default che come vedremo può essere cambiato). Se ora eseguiamo un dir otteniamo:
C:\Documents and Settings\rik\C_PROG>dir /b
a.exe
primo.c

C:\Documents and Settings\rik\C_PROG>
Per eseguire a.exe basterà scrivere:
C:\Documents and Settings\rik\C_PROG>a
Dennis Ritchie invento' il Linguaggio C

C:\Documents and Settings\rik\C_PROG>
Se vogliamo che l'eseguibile sia creato in un file con un nome diverso da a.exe, ad esempio primo.exe, basterà scrivere:
C:\Documents and Settings\rik\C_PROG>gcc primo.c -o primo

C:\Documents and Settings\rik\C_PROG>
Dopo di ciò se eseguiamo un dir e poi eseguiamo il programma ottteniamo:
C:\Documents and Settings\rik\C_PROG>dir /b
a.exe
primo.c
primo.exe

C:\Documents and Settings\rik\C_PROG>primo
Dennis Ritchie invento' il Linguaggio C

C:\Documents and Settings\rik\C_PROG>


Se il programma sorgente contiene degli errori il compilatore gcc li segnalerà tutti. Ad esempio, se invece di scrivere printf avessimo scritto print, il comando gcc primo.c produrrebbe un messaggio del seguente genere:

Undefined symbols:
  "_print", referenced from:
      _main in ccq1ZzwB.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Finché tutti gli errori non sono corretti il programma non può essere compilato.

Edit | Attach | Watch | Print version | History: r5 < r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r5 - 2011-09-23 - RiccardoSilvestri






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback