Home > GNU/Linux, newbie > Guida per principianti a GNU/Linux: cosa sono i sorgenti? – prima parte –

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 –

  1. cristian_c
    1 agosto 2008 alle 10:49

    E io che pensavo che come primo programma avresti messo Hello World😀

  2. cluedo
    1 agosto 2008 alle 14:18

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

  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. cluedo
    1 agosto 2008 alle 14:45

    ok, tutto chiaro. Grazie.

  5. sid9477
    1 agosto 2008 alle 16:13

    domanda idiota… a cosa serve vedere il codice binario?

  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”.

  7. 20 dicembre 2012 alle 22:57

    hello there and thank you for your info – I have certainly picked up anything
    new from right here. I did however expertise some
    technical points using this web site, as I experienced to reload the site
    lots of times previous to I could get it
    to load correctly. I had been wondering if your hosting
    is OK? Not that I’m complaining, but sluggish loading instances times will very frequently affect your placement in google and can damage your high quality score if advertising and marketing with Adwords. Well I’m adding
    this RSS to my e-mail and could look out for much more of your
    respective fascinating content. Make sure you update this again very soon.

  8. 15 gennaio 2014 alle 18:08

    Hello there! This post could noot be written any better!
    Reading this post reminds mee of my good old rom mate!
    He always kept chatting about this. I will forward thhis article to him.

    Fairly certain he will have a good read. Maany thanks foor sharing!

  9. 25 luglio 2014 alle 18:54

    Awesome article.

  10. 30 settembre 2014 alle 10:44

    It’s amazing to pay a quick visit this web site and reading the views of all
    friends concerning this post, while I am also keen of getting experience.

  11. 4 ottobre 2014 alle 20:27

    What’s up to all, the contents present at this site
    are really amazing for people knowledge, well, keep up
    the good work fellows.

  12. 5 ottobre 2014 alle 8:49

    Great article! We are linking to this great post
    on our website. Keep up the great writing.

  13. 23 novembre 2014 alle 22:30

    Quality content is the main to interest the visitors to pay a quick visit the site, that’s
    what this webb page iis providing.

  1. 2 agosto 2008 alle 14:13
  2. 27 agosto 2008 alle 1:33
  3. 6 dicembre 2009 alle 8:08

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: