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.ccompiliamo 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
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 –





E io che pensavo che come primo programma avresti messo Hello World 😀
"Mi piace""Mi piace"
…ahem…che cosa rappresenta il -o dopo gcc?
"Mi piace""Mi piace"
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
"Mi piace""Mi piace"
ok, tutto chiaro. Grazie.
"Mi piace""Mi piace"
domanda idiota… a cosa serve vedere il codice binario?
"Mi piace""Mi piace"
@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”.
"Mi piace""Mi piace"
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.
"Mi piace""Mi piace"
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!
"Mi piace""Mi piace"
Awesome article.
"Mi piace""Mi piace"
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.
"Mi piace""Mi piace"
What’s up to all, the contents present at this site
are really amazing for people knowledge, well, keep up
the good work fellows.
"Mi piace""Mi piace"
Great article! We are linking to this great post
on our website. Keep up the great writing.
"Mi piace""Mi piace"
Quality content is the main to interest the visitors to pay a quick visit the site, that’s
what this webb page iis providing.
"Mi piace""Mi piace"