Guida per principianti a GNU/Linux: cosa sono i sorgenti? – prima parte -

Cosa diamine sono i sorgenti?

E’ la domanda che i newbie dei sistemi liberi (GNU/Linux e le varie incarnazioni di Bsd) si fanno appena trovano qualche guida per installare un programma compilando, appunto, i sorgenti.

Sembra facile

./configure
make
sudo make install

E invece poi saltan fuori una sfilza di errori incomprensibili.

Cercherò quindi di spiegare, terra-terra, cosa sono i sorgenti e cosa vuol dire compilare.

Primo: abbiamo visto che il la CPU è quella parte del computer che elabora i dati e li scambia con il resto del sistema. I programmi vengono eseguiti dalla CPU. Ma come sono fatti questi programmi?

Probabilmente avete sentito parlare di “codice binario”. In sostanza un programma è fatto di sequenze di zeri e uno che rappresentano le istruzioni per la CPU. Si tratta di istruzioni molto semplici, del tipo:

Preleva il numero contenuto nella cella  X della memoria principale

Preleva il numero contenuto nella cella Y della memoria principale

Somma X+Y

Scrivi la somma nella cella di memoria Z della memoria principale

A parte rari casi, però, i programmatori non scrivono i loro programmi in questo linguaggio binario, detto “linguaggio macchina”. Usano invece dei linguaggi più potenti e flessibili, molto più simili al linguaggio umano. Abbiamo già visto un esempio, quello di un semplice programma in linguaggio C, lo stesso con il quale è scritta la maggior parte dei componenti di GNU/Linux, dal kernel alla libreria C, fino alla shell e le utility.

#include <stdio.h>
int main () {
    printf("Ecco il mio primo programma\n");
    return 0;
}

Ma questo programma non verrebbe mai capito dal processore. Ci vuole qualcosa che lo traduca nel linguaggio macchina. Questo qualcosa è il compilatore. Nel caso di GNU/Linux, il compilatore standard è GCC (GNU Compiler Collection). Si tratta di uno dei compilatori più avanzati e flessibili, uno dei migliori gioielli del software libero.

Supponiamo di aver scritto il sorgente con un editor di testo come gedit. Ora lo salviamo nella nostra home e gli diamo il nome primoprogramma.c

Dopidiché con un semplice:

gcc -o primoprogramma primoprogramma.c

compiliamo il programma. Il compilatore creerà un file eseguibile, chiamato primoprogramma, già collegato alla libreria C di GNU (ricordate?), dalla quale il programma attingerà la finzione printf che serve per stampare il messaggio. Come già detto, infatti, i programmi condividono tante parti di codice nelle cosiddette librerie, in modo da non dover sempre “reinventare la ruota”.

Vediamo come è fatto primoprogramma

Ghex ci mostra il nostro programma binario

GHex ci mostra il nostro programma binario

Grazie a GHex, un editor per file binari, vediamo la sfilza di numeri che compone il nostro programma.

GCC ha fatto il suo lavoro, e noi possiamo eseguire il nostro programma.

guido@guido-laptop:~$ ./primoprogramma
Ecco il mio primo programma

- fine prima parte -

8 Risposte a “Guida per principianti a GNU/Linux: cosa sono i sorgenti? – prima parte -”


  1. 1 cristian_c 1 Agosto 2008 alle 10:49

    E io che pensavo che come primo programma avresti messo Hello World :D

  2. 2 cluedo 1 Agosto 2008 alle 14:18

    …ahem…che cosa rappresenta il -o dopo gcc?

  3. 3 guiodic 1 Agosto 2008 alle 14:35

    E’ il parametro per definire il nome del file eseguibile (o sta per output). In questo caso il nome è “primoprogramma”
    Se non ce lo metti lui chiama il file eseguibile a.out

  4. 4 cluedo 1 Agosto 2008 alle 14:45

    ok, tutto chiaro. Grazie.

  5. 5 sid9477 1 Agosto 2008 alle 16:13

    domanda idiota… a cosa serve vedere il codice binario?

  6. 6 guiodic 1 Agosto 2008 alle 16:27

    @sid: ad esempio puoi cambiare il testo della scritta “Ecco il mio primo programma”.
    Ma volendo si può fare di più, trasformando il binario in Assembly, un linguaggio identico al linguaggio macchina ma che usa dei nomi comprensibili invece che zeri e uni.
    Se sei bravo, ma molto bravo, puoi fare piccole modifiche, ad esempio questa è una delle tecniche usate per aggirare le protezioni dei programmi da parte dei cracker.
    Addirittura è possibile ritornare al codice sorgente, ma si tratta di una tecnica molto imperfetta e soggetta a grossi errori.
    Non è possibile in pratica fare modifiche significative senza avere il codice sorgente originario.
    Per questo il motto dell’open source è “fammi vedere il codice”.


  1. 1 Guida per principianti a GNU/Linux: i sorgenti e GNU make - seconda parte - « Guiodic Blog Trackback su 2 Agosto 2008 alle 14:13
  2. 2 GNU/Linux e software proprietario: una convivenza difficile « Guiodic Blog Trackback su 27 Agosto 2008 alle 1:33

Lascia una Risposta




Firefox 3.5 su Ubuntu

Feed RSS Guiodic Blog

RSS Guiodic Blog
intervista a Richard Stallman

 

Agosto 2008
L M M G V S D
« Lug   Set »
 123
45678910
11121314151617
18192021222324
25262728293031

Archivi

Antipixel