2012-03-14 20 views
7

Sto costruendo gnu make dalla fonte per motivi troppo complicati da spiegare qui.Da dove viene il primo file binario?

ho notato costruirlo ho richiedere il comando make stesso, nella maniera tradizionale:

./configure 
make install 

Che importa se non ho avuto già la marca binario? Da dove è nato il primo binario?

+0

Dal primo 'fonte make'. * corre * –

+0

Dal 'make' prima di quello. _ducking_ – dldnh

+2

Che cosa è venuto prima, il pollo, l'uovo o la marca? – cost

risposta

4

Dallo stesso punto proveniva il primo binario gcc.

La prima marca è stata creata utilizzando probabilmente uno script di shell per eseguire la build. Dopo di ciò, make si "farebbe" da solo.

È un risultato notevole nello sviluppo di sistemi quando la piattaforma diventa "self-hosting". Questa è la piattaforma che può costruirsi da sola.

Cose come "make make" e "gcc gcc.c".

Molti scrittori di lingue creeranno la loro lingua in un'altra lingua (ad esempio, C) e quando lo avranno spostato abbastanza avanti, useranno il compilatore di bootstrap originale per scrivere un nuovo compilatore nella lingua originale. Alla fine, scartano l'originale.

Nel corso della giornata, un amico stava lavorando su un debugger per OS/2, notevole per essere un sistema operativo multi-tasking al momento. E si sarebbe interessato alle volte in cui avrebbero eseguito il debug del debugger e trovato un bug. Pertanto, eseguono il debug del debugger eseguendo il debug del debugger. È un concetto nuovo e va al cuore del calcolo e dell'astrazione.

Inevitabilmente, tutto si riduce a quando qualcuno ha inserito qualcosa tramite una tastiera o altri interruttori per ottenere un programma iniziale caricato. Poi hanno fatto leva su quel programma per fare altro lavoro, e tutto da lì cresce.

+1

"Inevitabilmente, tutto si riduce a quando qualcuno ha inserito qualcosa attraverso una tastiera", l'Adam del software –

2

make è solo uno strumento di convenienza. È ancora possibile richiamare cc, ld, ecc. Manualmente o tramite altri strumenti di scripting.

0

Compilare programmi C non è l'unico modo per produrre un file eseguibile. Il primo render eseguibile (o in particolare il compilatore C stesso) potrebbe ad esempio essere un programma di assemblaggio, oppure potrebbe essere codificato a mano nel codice macchina. Potrebbe anche essere cross compilato su un sistema completamente diverso.

0

L'essenza di make è che è un modo semplificato di eseguire alcuni comandi.

Per rendere la prima marca, l'autore doveva agire manualmente come make ed eseguire gcc o qualsiasi set di strumenti disponibile, invece di eseguirlo automaticamente.

3

Stuart Feldman, poi a AT & T, ha scritto il codice sorgente per make intorno al periodo della 7 ° Edizione UNIX ™, e utilizzato compilazione manuale (o forse uno script di shell) fino make stava lavorando abbastanza bene per essere utilizzato per la costruzione si. È possibile trovare lo UNIX Programmer's Manual per la 7a edizione online e, in particolare, il documento originale che descrive la versione originale di make, datata agosto 1978.

0

Se si sta costruendo GNU make, uno sguardo alla build.sh nella struttura di origine dopo l'esecuzione configure:

# Shell script to build GNU Make in the absence of any `make' program. 
# build.sh. Generated from build.sh.in by configure. 
Problemi correlati