Eu uso o Gentoo como meu sistema operacional de desktop doméstico principal. Eu tenho desde ~2004. Agradeço o emerge
comando para gerenciar um sistema operacional baseado em fonte tão bem quanto ele. De vez em quando eu verifico outras distribuições, mas gosto particularmente deLinux From Scratch – Para quem não sabe. É verdade que nunca li o livro inteiro porque usar o Gentoo me estragou nesse aspecto. Considero o Gentoo um LFS + um gerenciador de pacotes. Finalmente decidi que vou completar o livro, então coloquei o XUbuntu em uma VM para simular a novidade e...
Estou acompanhando o release candidate paraVersão 3 - Systemd do CLFS, e isso me atingiu emCapítulo 6 - Sistema Temporário - Make. Se um usuário precisar make
compilar uma versão do Make, oProblema de causalidade de frango e ovoparece Isso me leva às minhas próximas perguntas lógicas.
QuandoStuart Feldmancriado
make
em 1976, como o público da computação compilou seu programa se seu sistema operacional não continha um sistema operacional dependentemake
? Devo presumir que o artigo da WikiPedia abaixo é verdadeiro para todos os sistemas operacionais?Ele teve que empacotar o make para incluir todas as versões do make dependentes do sistema operacional para completar 1?(Veja abaixo)
Se eu precisasse do Programa A, mas ele só estivesse disponível para compilação no SO A, eu teria que comprar o SO A, mesmo que usasse o OS B? (Ignore o Windows aqui, se possível.)
Atualizar
- Com base no comentário de Jimmij,Os compiladores específicos do sistema operacional existiam da mesma maneira que o make era dependente do sistema operacional?
WikiPédiadiz:
Antes da introdução do Make, o sistema de construção Unix geralmente consistia em scripts de shell "make" e "install" dependentes do sistema operacional que acompanhavam a fonte do programa. Ser capaz de combinar os comandos para diferentes destinos em um único arquivo e abstrair o rastreamento de dependências e a manipulação de arquivos foi um passo importante na direção dos ambientes de construção modernos.
Além disso, observe que estou procurando aqui alguma perspectiva histórica, já que nasci em 1976.
Responder1
Make é simplesmente por conveniência. Você pode construir software sem ele, é apenas mais difícil.
Quando você executa make
para construir algo, ele mostra os comandos que está executando. Você pode executar esses comandos manualmente e obter o mesmo efeito.
$ echo "int main() {}" > test.c
$ make test
cc test.c -o test
Que criou um arquivo chamado test
.
Posso obter o mesmo resultado apenas fazendo:
cc test.c -o test
Se make não existisse, você poderia instruir os usuários a executar esse cc
comando manualmente ou distribuir um script de shell e instruí-los a executar o script.