Punto informatico Network
Canali
20091011195959_536691528_20091011195943_1980265020_sl_open.png

Cenni generali sulla compilazione in GNU/Linux

21/05/2010
- A cura di
Linux & Open Source - Probabilmente saper "compilare" qualcosa in sistemi operativi derivanti da UNIX è una delle basi a cui riferirsi per ottenere una vera e propria "raffinazione" e customizzazione dei software installati nel sistema.

Tag

Passa qui con il mouse e visualizza le istruzioni per utilizzare i tag!

compilazione (1) .

Valutazione

  •  
Voto complessivo 4 calcolato su 25 voti
Il pezzo che stai leggendo è stato pubblicato oltre un anno fa. AvvisoLa trattazione seguente è piuttosto datata. Sebbene questo non implichi automaticamente che quanto descritto abbia perso di validità, non è da escludere che la situazione si sia evoluta nel frattempo. Raccomandiamo quantomeno di proseguire la lettura contestualizzando il tutto nel periodo in cui è stato proposto.

Sappiate che non si impara a compilare in cinque minuti. Serve determinazione, studio e un po' di cervello. Se però imparerete ad affacciarvi a questa strana "arte" avrete compiuto un passo in più verso la vera indipendenza nella manutenzione di un sistema operativo, specialmente GNU/Linux.

La distribuzione per eccellenza che fa estensivo uso di questa tecnica è la Slackware, creata nel 1992, tuttora esistente e mantenuta da Patrick Volkerding. Essa è una tra le distribuzioni più vecchie e stabili, e fa della semplicità (intesa come semplicità strutturale e non di utilizzo) uno dei suoi punti di forza, a prezzo dell'usabilità. E il modo migliore di manutenere e aggiornare la Slackware è attraverso la compilazione.

In questo articolo cercherò di spiegarvi le basi della compilazione, a partire dai concetti generali.

Che cos'è la compilazione?

Il cuore pulsante di un computer è la CPU (Central Processing Unit), che nei sistemi di oggi può essere un processore AMD Athlon X2, un Intel Core 2 Duo o un processore ARM. Essi sono centraline di controllo che possiedono un certo insieme (chiamato in gergo "set") di istruzioni macchina, manipolato in modo diretto dal proprio linguaggio macchina.

Il linguaggio macchina è a tutti gli effetti un linguaggio di programmazione, ma non è un linguaggio portabile [1], ovvero non può essere impiegato su architetture diverse [2]. Esso è valido soltanto sui processori compatibili con l'architettura per la quale il programma è stato scritto. Per esempio, l'architettura ARM è fondamentalmente differente dall'architettura x86, usata da AMD e Intel, in quanto sono fisicamente diverse e usano diversi set di istruzioni. Quindi un programma scritto in linguaggio macchina (chiamato anche "assembly") x86 non potrà girare su un'architettura ARM, e un programma scritto in assembly ARM non funzionerà su un processore x86 come AMD o Intel. [3]

Entrano quindi in scena i compilatori e i linguaggi portabili.

Un compilatore x86 può generare codice x86 partendo da un semplice file contenente codice sorgente scritto in un linguaggio portabile come il C. Lo stesso codice sorgente può essere compilato con modifiche nulle o minime su qualsiasi architettura purchè si disponga del compilatore adatto, che possa girare sull'architettura "target".

Un po' di storia

I primi computer richiedevano che i software da far girare su di essi fossero scritti nel loro set di istruzioni specifico. Quindi all'inizio non si poteva parlare di "compilazione" in senso stretto, proprio perché non c'era niente da compilare, e il codice sorgente era lo stesso linguaggio macchina.

Ciononostante esistevano i... "compilatori", che non erano programmi, ma persone in carne ed ossa che compilavano una scheda o un nastro perforato, più o meno in un modo analogo alla compilazione di... una dichiarazione dei redditi. Questi supporti venivano punzonati e fatti leggere da una macchina apposita, che provvedeva a trasmettere le istruzioni macchina corrispondenti al computer. Esso eseguiva poi il codice, ovvero il programma.

Con il passare del tempo i costi dei grandi computer delle aziende aumentavano, assieme alla varietà delle architetture, e programmare software in linguaggio macchina cominciò a diventare sempre più dispendioso. Si fece dunque prioritaria la creazione di strumenti in grado di generare codice macchina compatibile con una grande quantità di processori, partendo da una serie di istruzioni generiche e valide per ogni tipo di hardware. Fu così che i compilatori videro la luce. [4]

I primi compilatori erano scritti in linguaggio macchina, e verso gli anni 70 fecero la loro comparsa i primi compilatori in grado di compilare se stessi nel linguaggio che possono comprendere (chiamati anche "autocontenuti", o self-hosting). Fra essi, il Pascal alla fine degli anni 60 e il famoso e diffusissimo C nel 1972, creato dai progettisti di UNIX per UNIX stesso.

Con il passare del tempo i compilatori si sono evoluti e perfezionati per supportare una sempre più ampia varietà di architetture, e fra tutti i compilatori C vorrei ricordare GCC, acronimo di GNU Compiler Collection (inizialmente GNU C Compiler), un progetto avviato da Richard Stallman e mantenuto da Free Software Foundation, che ha di fatto gettato le basi degli standard C attualmente adottati dai compilatori C oggi in circolazione.

Potete dare un'occhiata a quest'articolo per qualche informazione in più sulla storia dei computer e dei sistemi operativi liberi prima degli anni 90.

Pagina successiva
Percorso di un file sorgente

 

Segnala ad un amico

Tuo nome Tuo indirizzo e-mail (opzionale)
Invia a:
    Aggiungi indirizzo email
    Testo

    © Copyright 2024 BlazeMedia srl - P. IVA 14742231005

    • Gen. pagina: 0.28 sec.
    •  | Utenti conn.: 33
    •  | Revisione 2.0.1
    •  | Numero query: 45
    •  | Tempo totale query: 0.11