2012-03-14 13 views
7

Estoy teniendo que compilar gnu make de la fuente por razones demasiado complicadas de explicar aquí.¿De dónde vino el primer binario de hacer?

me di cuenta de que construirlo demandaré la orden make en sí, a la manera tradicional:

./configure 
make install 

¿Y qué si yo no tenía la marca binaria ya? ¿De dónde vino el primer binario creado?

+0

Desde el primer 'fuente make'. * ejecuta * –

+0

desde el 'make' antes de eso. _ducking_ – dldnh

+2

¿Qué fue primero, el pollo, el huevo o la marca? – cost

Respuesta

4

Del mismo lugar vino el primer binario gcc.

La primera marca se creó probablemente utilizando un script de shell para hacer la compilación. Después de eso, make se "haría" a sí mismo.

Es un logro notable en el desarrollo de sistemas cuando la plataforma se convierte en "self-hosting". Esa es la plataforma que puede construirse a sí misma.

Cosas como "make make" y "gcc gcc.c".

Muchos escritores de idiomas crearán su idioma en otro idioma (por ejemplo, C) y cuando lo hayan movido lo suficientemente lejos, usarán ese compilador de arranque original para escribir un nuevo compilador en el idioma original. Finalmente, descartan el original.

Anteriormente, un amigo estaba trabajando en un depurador para OS/2, notable por ser un sistema operativo multitarea en el momento. Y él se regodearía sobre los tiempos en los que depurarían el depurador y encontraría un error. Entonces, depurarían el depurador que depura el depurador. Es un concepto novedoso y va al corazón de la informática y la abstracción.

Inevitablemente, todo se reduce a cuando alguien tecleó algo a través de un teclado o algunos otros interruptores para cargar un programa inicial. Luego aprovecharon ese programa para hacer otro trabajo, y todo crece desde allí.

+1

"Inevitablemente, todo se reduce a cuando alguien tecleó algo a través de un teclado inteligente" - Adam del software –

2

make es solo una herramienta de conveniencia. Todavía es posible invocar cc, ld, etc. manualmente o a través de otras herramientas de scripting.

0

La compilación de programas C no es la única forma de producir un archivo ejecutable. El primer ejecutable make (o más notablemente el compilador C mismo) podría ser, por ejemplo, un programa ensamblador, o podría estar codificado a mano en código máquina. También podría ser compilado cruzado en un sistema completamente diferente.

0

La esencia de make es que es una forma simplificada de ejecutar algunos comandos.

Para hacer la primera marca, el autor tuvo que actuar manualmente como make, y ejecutar gcc o cualquier conjunto de herramientas disponible, en lugar de que se ejecutara automáticamente.

3

Stuart Feldman, a continuación, en el AT & T, escribió el código fuente de make en la época de 7ª Edición UNIX ™, y se utiliza la compilación manual (o tal vez un script de shell) hasta make estaba trabajando lo suficientemente bien como para ser utilizado para construir sí mismo. Puede encontrar el UNIX Programmer's Manual para la 7ma Edición en línea, y en particular, el documento original que describe la versión original de make, con fecha de agosto de 1978.

0

Si usted está construyendo GNU make, echar un vistazo a build.sh en el árbol de origen después de ejecutar configure:

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