O que é um makefile exatamente e como podemos criar um?

8

Sei que essa é uma pergunta boba, mas como estou tentando aprender linux sozinho, preciso de ajuda de vocês.

Encontrei essa tarefa na internet e estou tentando resolvê-la, mas não entendo exatamente como posso usar makefiles no linux e como criá-los.

Vamos supor que meu diretório de trabalho de impressão seja /home/george/Documents

Eu quero criar um makefile que faça o seguinte:

  1. Exibe uma mensagem da seguinte forma: "Olá, trabalho, hoje é domingo". O sol vem do domingo. Portanto, devo usar o datecomando neste arquivo make para exibir apenas as três primeiras letras.
  2. compressa /etc/hostsem /tmpusar gzip(provavelmente aqui deve ser algo como

    gzip -c SOURCE DESTINATION # ?? 
    

Felicidades

Adrian George
fonte
Makefiles existem para criar seletivamente arquivos de objetos desatualizados a partir dos arquivos de origem, em uma atividade de desenvolvimento de software. Não tem nada a ver com o que você faria.
enzotib 17/08/13

Respostas:

8

Para responder à sua pergunta, não posso fornecer uma resposta de uma linha / parágrafo, porque lida com tudo. Leia o primeiro link e também com tudo o que você precisa com exemplos.

Bom tutorial que pode explicar tudo sobre make

rɑːdʒɑ
fonte
3
o primeiro link deve ser: mrbook.org/blog/tutorials/make
Shahryar Saljoughi
O mrbook.org/blog/tutorials/make tutorial usa código c ++ desatualizado e não é mais compilado. Veja esta pergunta para entender e corrigir.
David
Links estão mortos.
ComputerScientist
2

Um Makefile é usado como um "mapa" para a compilação de programas em C. Eles trabalham com o makeutilitário e descrevem como um programa deve ser compilado / vinculado para funcionar corretamente, uma vez transformado em um arquivo executável. Para tarefas globais do UNIX / shell, você está procurando scripts de shell, não makefiles :)

Veja http://en.wikipedia.org/wiki/Make_(software)#Makefiles para obter mais informações sobre makefiles e http://en.wikipedia.org/wiki/Shell_script para descobrir scripts de shell.

Um script shell básico para o que você está tentando fazer pode ser:

#!/bin/bash
echo "Hello world, today is $(date +%a)"
gzip -c SOURCE DESTINATION

Armazenar isso em um arquivo e executá-lo usando o seu shell prompt de ( bash myscript.sh, sh myscript.sh...). Você também pode tornar o script executável usando:

chmod +x myscript.sh

E, em seguida, execute-o com seu intérprete padrão com:

./myscript.sh
John WH Smith
fonte
1
Estou tentando criar um makefile que não é um script de shell.
Adrian George
Então você deve desenvolver um programa C que faça isso e compilá-lo usando um Makefile, se desejar. Makefiles não executam tarefas do Linux, eles orientam a compilação de programas em C, é uma coisa completamente diferente.
John WH Smith
1
@ JohnWHSmith Não há nada de especial em compilar programas em C. Makefiles podem ser usados ​​para executar uma variedade de tarefas. (Com isso dito, muitas tarefas são mal adequado para o uso de makefiles.)
Elias Kagan
0

Por que não criar um script de shell e criar um link simbólico que aponte para o script de shell que você criou? Coloque o link simbólico em um diretório que está no PATH, para que você possa 'executar' o link simbólico, independentemente do diretório em que está localizado.

user544202
fonte