Canali
![]() Ultime news
![]() Ultimi articoli
![]() Le ultime dal Forum |
![]() Correlati![]() TagPercorso di un file sorgenteLa vita di un programma comincia nel momento in cui viene ideato e progettato, con diagrammi di flusso, problematiche da risolvere, pseudocodice, raffinazioni successive, strutture di funzioni, eccetera. Dopo la teoria arriva la pratica, e giunge il momento in cui viene scritto. Il programma può comprendere da uno a migliaia, o decine di migliaia, di file sorgente, che devono essere compilati per poter essere usati in qualche modo. Riassumo di seguito i passi fondamentali che un file sorgente fa nella sua trasformazione in eseguibile. Analisi lessicaleIl cammino dei sorgenti comincia quando essi vengono letti da un primo stadio chiamato "analisi di lessico". Viene usato un programma che suddivide il codice in piccoli frammenti chiamati "token" [5]. PreprocessingDopo l'analisi del lessico c'è il preprocessing, in cui alcuni linguaggi come il C sostituiscono le invocazioni degli header [6] dichiarati nel codice sorgente con istruzioni relative, generando un codice intermedio completo. Analisi della sintassiAvviene poi l'analisi della sintassi e della semantica, in cui il compilatore (o un programma ottimizzato per questa funzione, chiamato "parser") controlla che non esistano errori di battitura come istruzioni sbagliate, variabili non referenziate, parametri non corretti e così via. Questa fase è strettamente legata all'analisi lessicale. OttimizzazioneDopo l'analisi sintattica e semantica comincia la vera e propria elaborazione del linguaggio, con una fase intermedia di ottimizzazione del codice, per fare in modo che il programma compilato richieda meno cicli di processore e meno memoria possibile, e quindi meno risorse possibili per la sua esecuzione. Generazione del codiceAlla fine si ha la generazione del codice macchina, ovvero del programma eseguibile, in una procedura chiamata assembling [7] [7a]. Ottenere un ambiente di compilazione con UbuntuSe ancora non siete abbastanza spaventati, potete continuare a leggere mentre vi descriverò brevemente come compilare un software semplice in un sistema operativo GNU/Linux, per la precisione Ubuntu. Notate che le istruzioni per l'installazione dell'ambiente di compilazione sono valide per qualsiasi distribuzione derivata da Debian. La primissima cosa da tenere in considerazione è che quello che vi farò scaricare è un ambiente di compilazione standard, in cui potrebbero mancare strumenti meno conosciuti. Ma generalmente parlando si tratta comunque di un ambiente di compilazione con cui potrete generare applicazioni scritte in C e C++, ovvero la stragrande maggioranza del software disponibile per GNU/Linux. Prima di scaricare gli strumenti verificate se avete gli strumenti con questo comando: gcc Qualsiasi output diverso da questo gcc: no input files Vorrà dire che gcc, ovvero il compilatore di cui avete bisogno, non sarà installato nel vostro sistema, e dovrete installarlo con il seguente comando: sudo apt-get install build-essential flex bison libtool autoconf automake1.9 C'è poi da tener presente il fatto, molto importante, che nella compilazione è da ritenere fondamentale: le versioni dei software che installate tramite la compilazione potrebbero richiedere versioni di pacchetti e di dipendenze che nei repository Ubuntu ancora non sono comprese. Per questo dovete sempre tenere d'occhio tutte le fasi della compilazione. Ricordate che compilare è come costruire una macchina da zero, avendo solo i componenti: ogni componente deve essere compatibile con tutti gli altri ed ognuno deve essere controllato affinché funzioni al meglio. Vorrei anche precisare che la compilazione di software è un procedimento in alcuni casi tecnico e delicato che potrà richiedere delle correzioni di volta in volta, a seconda del pacchetto che intendete installare. Ricordate sempre di leggere la documentazione prima di cominciare, specialmente se siete alle prime armi. ![]() Compiliamo yasm ![]() Introduzione Pagine
Segnala ad un amico |
© Copyright 2025 BlazeMedia srl - P. IVA 14742231005