Che cos'è esattamente un makefile e come possiamo crearne uno?


8

So che questa è una domanda sciocca, ma dal momento che sto provando così tanto ad imparare Linux da solo, ho bisogno dell'aiuto di voi compagni.

Ho trovato questo compito su Internet e sto cercando di risolverlo ma non capisco esattamente come posso usare i makefile in Linux e come posso crearli.

Supponiamo che la mia directory di lavoro per la stampa sia /home/george/Documents

Voglio creare un makefile che procede come segue:

  1. Visualizza un messaggio come segue "ciao lavoro, oggi è il sole". Il sole viene da domenica. Quindi devo usare il datecomando in questo file make per visualizzare solo le prime tre lettere.
  2. impacco /etc/hostsa /tmpusando gzip(probabilmente qui dovrebbe essere qualcosa di simile

    gzip -c SOURCE DESTINATION # ?? 
    

Saluti


I makefile sono lì per creare selettivamente file di oggetti obsoleti dai file di origine, in un'attività di sviluppo software. Non ha nulla a che fare con ciò che faresti.
enzotib,

Risposte:


8

per rispondere alla tua domanda non posso darti una risposta di una riga / paragrafo perché si occupa di ogni cosa. Leggi il primo link ha anche tutto ciò che ti serve con esempi.

Un buon tutorial che può spiegare tutto su make


3
il primo link dovrebbe essere: mrbook.org/blog/tutorials/make
Shahryar Saljoughi,

Il tutorial di mrbook.org/blog/tutorials/make utilizza codice c ++ obsoleto e non viene più compilato. Vedi questa domanda per capire e risolvere.
David

I collegamenti sono morti.
ComputerScientist

2

Un Makefile viene utilizzato come "mappa" per la compilazione di programmi C. Funzionano con l' makeutilità, descrivono come un programma deve essere compilato / collegato per funzionare correttamente una volta trasformato in un file eseguibile. Per le attività globali UNIX / shell, stai cercando script shell, non makefile :)

Vedi http://en.wikipedia.org/wiki/Make_(software)#Makefiles per ulteriori informazioni sui makefile e http://en.wikipedia.org/wiki/Shell_script per scoprire script di shell.

Uno script di shell di base per quello che stai cercando di fare potrebbe essere:

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

Conservare questo in un file ed eseguire utilizzando la shell prompt ( bash myscript.sh, sh myscript.sh, ...). Puoi anche rendere eseguibile lo script usando:

chmod +x myscript.sh

E poi eseguilo con il tuo interprete predefinito con:

./myscript.sh

1
Sto cercando di creare un makefile che non sia uno script di shell.
Adrian George,

Quindi devi sviluppare un programma C che lo fa e compilarlo usando un Makefile, se vuoi. I makefile non eseguono attività Linux, guidano la compilazione di programmi C, è una cosa completamente diversa.
John WH Smith,

1
@JohnWHSmith Non c'è niente di speciale nella compilazione di programmi C. I makefile possono essere utilizzati per eseguire una varietà di attività. (Detto questo, molti compiti sono scarsamente adatti all'uso dei makefile.)
Eliah Kagan,

0

Perché non creare uno script di shell, quindi creare un collegamento simbolico che punti allo script di shell che hai creato? Posiziona il link simbolico in una directory che si trova nel PERCORSO, in modo da poter "eseguire" il link simbolico indipendentemente dalla directory in cui ti trovi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.