Utilizo Gentoo como mi sistema operativo de escritorio principal. Lo he hecho desde ~2004. Aprecio el emerge
comando para administrar un sistema operativo basado en código fuente tan bien como lo hace. De vez en cuando reviso otras distribuciones, pero me gusta especialmenteLinux desde cero: para aquellos que no lo saben. Por supuesto, nunca he leído el libro completo porque usar Gentoo me ha echado a perder en ese sentido. Considero que Gentoo es LFS + un administrador de paquetes. Finalmente decidí que iba a completar el libro, así que puse XUbuntu en una VM para simular la novedad y...
Estoy siguiendo el candidato de lanzamiento paraVersión 3 - Systemd de CLFS, y me golpeó enCapítulo 6 - Sistema Temporal - Hacer. Si un usuario necesita make
compilar una versión de Make, elProblema de causalidad del huevo y la gallinaaparece Esto me lleva a mis siguientes preguntas lógicas.
CuandoStuart FeldmanCreado
make
en 1976, ¿cómo compiló el público informático su programa si su sistema operativo no contenía un sistema operativo dependientemake
? ¿Debo asumir que el siguiente artículo de WikiPedia es válido para todos los sistemas operativos?¿Tuvo que empaquetar make para incluir todas las versiones de make dependientes del sistema operativo para completar 1?(Vea abajo)
Si necesitaba el Programa A, pero solo estaba disponible para compilar en el OS A, ¿tenía que comprar el OS A, incluso si uso el OS B? (Ignore Windows aquí si es posible).
Actualizar
- Basado en el comentario de jimmij,¿Existían compiladores específicos del sistema operativo de la misma manera que dependían del sistema operativo?
WikiPediadice:
Antes de la introducción de Make, el sistema de compilación Unix consistía más comúnmente en scripts de shell "make" e "install" dependientes del sistema operativo que acompañaban al código fuente de su programa. Poder combinar los comandos para los diferentes objetivos en un solo archivo y poder abstraer el seguimiento de dependencias y el manejo de archivos fue un paso importante en la dirección de los entornos de compilación modernos.
Además, tenga en cuenta que estoy buscando una perspectiva histórica aquí, ya que nací en 1976.
Respuesta1
Hacerlo es simplemente por conveniencia. Puedes crear software sin él, simplemente es más difícil.
Cuando ejecutas make
para construir algo, te muestra los comandos que está ejecutando. Puede ejecutar esos comandos manualmente y obtener el mismo efecto.
$ echo "int main() {}" > test.c
$ make test
cc test.c -o test
Lo cual creó un archivo llamado test
.
Puedo obtener el mismo resultado simplemente haciendo:
cc test.c -o test
Si make no existiera, podría indicar a los usuarios que ejecuten este cc
comando manualmente, o podría distribuir un script de shell e indicarles que ejecuten el script.