web-dev-qa-db-fra.com

Pourquoi make print "make: rien à faire pour" tous ".?

Ceci est un module "Hello.c" et "Makefile". Après avoir exécuté make à partir du répertoire woking, le message suivant s'affiche:

make: Rien à faire pour "tous".

Ceci est le fichier "Hello.c":

#include <linux/module.h>    // included for all kernel modules
#include <linux/kernel.h>    // included for KERN_INFO
#include <linux/init.h>      // included for __init and __exit macros

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Lakshmanan");
MODULE_DESCRIPTION("A Simple Hello World module");

static int __init hello_init(void) {
  printk(KERN_INFO "Hello world!\n");
  return 0;    // Non-zero return means that the module couldn't be
}

static void __exit hello_cleanup(void) {
    printk(KERN_INFO "Cleaning up module.\n");
}   

module_init(hello_init); 
module_exit(hello_cleanup);

Et "Makefile":

obj-m += hello.o

all:
    make -C /lib/modules/$(Shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(Shell uname -r)/build M=$(PWD) clean

J'ai essayé toutes les suggestions et je l'ai eu dans le terminal:

root@stupid-HP:/home/stupid/cpz/module$ pwd
/home/stupid/cpz/module
root@stupid-HP:/home/stupid/cpz/module$ ls
hello.c  Makefile
root@stupid-HP:/home/stupid/cpz/module$ make
make: Nothing to be done for `all'.
root@stupid-HP:/home/stupid/cpz/module$ make clean
make: Nothing to be done for `clean'.
root@stupid-HP:/home/stupid/cpz/module$ make clean all
make: Nothing to be done for `clean'.
make: Nothing to be done for `all'.
root@stupid-HP:/home/stupid/cpz/module$ ls
hello.c  Makefile
root@stupid-HP:/home/stupid/cpz/module$ make
make: Nothing to be done for `all'.
root@stupid-HP:/home/stupid/cpz/module$ vi hello.c  # modified again
root@stupid-HP:/home/stupid/cpz/module$ make clean
make: Nothing to be done for `clean'.
root@stupid-HP:/home/stupid/cpz/module$ make
make: Nothing to be done for `all'.
4
user55111

Faire des travaux sur la base des horodatages. Si vous modifiez certains de vos fichiers source, compilez-les et construisez l'image en conséquence. Si vous ne modifiez pas le fichier source, le compilateur n'a rien à voir avec votre projet. make ne fonctionne pas comme gcc à compiler chaque fois si une nouvelle construction est nécessaire ou non. C'est l'un des nombreux avantages de l'utilisation de make pour votre projet. 

6
incompetent
  1. make clean puis make encore
  2. vérifier les espaces et les onglets selon le format de fichier make 
  3. Vérifier le chemin des bibliothèques du noyau
22
Dilip Kumar

Le compilateur vous dit simplement que votre code a déjà été compilé et que votre code ne change pas (il est à jour), il ne compile pas. Est une fonctionnalité intégrée des compilateurs. S'il n'y a aucune modification dans le fichier de code source, les compilateurs ne perdent pas de temps.

Utilisez make clean avant de make ou modifiez Hello.c et construisez votre projet.

2
LPs

Vous devriez supprimer de l'espace dans votre Makefile. Dans le makefile, utilisez seulement tab.

J'ai testé votre code à nouveau, et cela fonctionne avec l'onglet

2
Hoang Pham

Essayez: make clean pour supprimer le fichier exécutable (./a.out) et essayez de le compiler à nouveau! 

0
sofronas

Juste au cas où quelqu'un rencontrerait le même problème que moi: 

Eclipse ne parvient pas à créer correctement lorsqu'un de vos dossiers porte le même nom que l'exécutable. Si tel est le cas, peu importe ce que vous faites, vous recevrez toujours le message "rien à faire". La solution consiste à renommer le dossier ou l'exécutable. Les détails peuvent être trouvés ici .

0
user463035818