Un file eseguibile (o semplicemente un eseguibile), in informatica, indica un file che contiene un programma eseguibile per un computer, ovvero un programma scritto in linguaggio macchina direttamente eseguibile dal processore: si distingue da un file sorgente, che contiene un programma scritto in un linguaggio di programmazione ad alto livello il quale può essere eseguito solo utilizzando un interprete o trasformandolo prima in eseguibile (codice oggetto + librerie) tramite un compilatore, o con una combinazione di questi due strumenti.
In generale, gli eseguibili sono dipendenti dalla piattaforma: per esempio, un file eseguibile per un sistema Microsoft Windows non è direttamente utilizzabile in sistemi Unix o Mac OS (a meno di non usare un software di emulazione[1]). Questa restrizione è dovuta a tre motivi:
Ogni sistema operativo ha una propria convenzione per distinguere i file eseguibili dai file che contengono dati. Alcuni sistemi utilizzano specifiche estensioni (per esempio ".exe
" in MS-DOS e Microsoft Windows); altri fanno riferimento a speciali attributi del file indicati nei suoi permessi (come il permesso "x
" di esecuzione dei sistemi Unix e Unix-like) o richiedono uno speciale marcatore in una posizione prestabilita all'interno del file stesso: ancora su Unix, per esempio, congiuntamente al bit "x", viene utilizzato anche il cosiddetto magic number, ovvero uno o più byte con valori prestabiliti collocati all'inizio del file che ne identificano il tipo, come nel caso dello shabang (questa idea è stata estesa ad altri sistemi operativi tra cui AmigaOS dove il magic number viene chiamato "magic cookie" o biscottino magico).
Normalmente, durante l'upload di un file eseguibile in memoria, il codice macchina viene sottoposto a un processo di rilocazione. In altre parole, tutti i riferimenti a indirizzi di memoria presenti nel codice vengono opportunamente traslati in funzione dell'indirizzo di base in cui il programma viene effettivamente caricato. Questo problema è mitigato dall'uso della memoria virtuale; può tuttavia essere necessaria la rilocazione delle librerie dinamiche.
Viene realizzato in un dato formato, ed ha principalmente due scopi:
a) ad essere caricato dal sistema operativo, quindi pronto per l'esecuzione;
b) all'architettura hardware del processore che lo esegue.
Il termine eseguibile viene talvolta utilizzato in senso esteso per riferirsi anche a tutti quei programmi che possono essere eseguiti senza una previa traduzione esplicita (compilazione) in linguaggio macchina. In questo caso esso potrebbe essere applicato anche a:
Categorie: Formati di file eseguibili