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

Avatar utente
Etabeta
Messaggi: 945

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

Messaggio #1 »

domenica, 1. gennaio 2012, 14:50

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

Immagine

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:
Citato:
"./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 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:

Citato:
"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.
Citato:
"#include <stdio.h>
int main () {
printf("Ecco il mio primoprogramma\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:
Citato:
"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 il primo programma:

Immagine

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.

Citato:
"guido@guido-laptop:~$ ./primoprogramma,,

Ecco il mio primo programma.

Crescia
Etabeta