Qu'est-ce qu'un makefile exactement et comment pouvons-nous en créer un?

8

Je sais que c'est une question idiote, mais comme j'essaie si fort d'apprendre le linux par moi-même, j'ai besoin de l'aide de vous.

J'ai trouvé cette tâche sur Internet et j'essaie de la résoudre mais je ne comprends pas exactement comment utiliser des makefiles sous Linux et comment les créer.

Supposons que mon répertoire de travail d'impression soit /home/george/Documents

Je veux créer un makefile qui fait ce qui suit:

  1. Affiche un message comme suit "bonjour le travail, aujourd'hui c'est le soleil". Le soleil vient du dimanche. Je dois donc utiliser la datecommande dans ce fichier make pour afficher uniquement les trois premières lettres.
  2. compresser /etc/hostsen /tmputilisant gzip(probablement ici devrait être quelque chose comme

    gzip -c SOURCE DESTINATION # ?? 
    

À votre santé

Adrian George
la source
Les Makefiles sont là pour créer sélectivement des fichiers objets obsolètes à partir de fichiers source, dans une activité de développement logiciel. Cela n'a rien à voir avec ce que vous feriez.
enzotib

Réponses:

8

pour répondre à votre question, je ne peux pas vous donner une réponse d'une ligne / paragraphe car il traite de tout. Lisez le premier lien, il a tout ce dont vous avez besoin avec des exemples aussi.

Bon tutoriel qui peut tout expliquer sur make

rɑːdʒɑ
la source
3
le premier lien doit être: mrbook.org/blog/tutorials/make
Shahryar Saljoughi
mrbook.org/blog/tutorials/make tutorial utilise du code c ++ obsolète et ne compile plus. Voir cette question pour comprendre et résoudre.
David
Les liens sont morts.
ComputerScientist
2

Un Makefile est utilisé comme "carte" pour la compilation des programmes C. Ils fonctionnent avec l' makeutilitaire et décrivent comment un programme doit être compilé / lié pour fonctionner correctement une fois transformé en fichier exécutable. Pour les tâches UNIX / shell globales, vous recherchez des scripts shell, pas des makefiles :)

Voir http://en.wikipedia.org/wiki/Make_(software)#Makefiles pour plus d'informations sur les makefiles et http://en.wikipedia.org/wiki/Shell_script pour découvrir les scripts shell.

Un script shell de base pour ce que vous essayez de faire pourrait être:

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

Conservez ce dans un fichier, et l' exécuter en utilisant votre invite du shell ( bash myscript.sh, sh myscript.sh, ...). Vous pouvez également rendre le script exécutable en utilisant:

chmod +x myscript.sh

Et puis exécutez-le avec votre interpréteur par défaut avec:

./myscript.sh
John WH Smith
la source
1
J'essaie de créer un makefile qui ne fait pas cela un script shell.
Adrian George
Ensuite, vous devez développer un programme C qui fait cela, et le compiler en utilisant un Makefile, si vous le souhaitez. Les Makefiles n'exécutent pas de tâches Linux, ils guident la compilation des programmes C, c'est une chose complètement différente.
John WH Smith
1
@JohnWHSmith La compilation de programmes C n'a rien de spécial. Les Makefiles peuvent être utilisés pour effectuer une variété de tâches. (Cela dit, de nombreuses tâches sont mal adaptées à l'utilisation de makefiles.)
Eliah Kagan
0

Pourquoi ne pas créer un script shell, puis créer un lien symbolique qui pointe vers le script shell que vous avez créé? Placez le lien symbolique dans un répertoire qui se trouve dans le CHEMIN, afin de pouvoir «exécuter» le lien symbolique quel que soit le répertoire dans lequel vous vous trouvez.

user544202
la source