webentwicklung-frage-antwort-db.com.de

Warum wird der Druckvorgang "make: Nichts für alle" ausgeführt?

Dies ist ein "Hello.c" Modul und "Makefile". Nach dem Ausführen von make aus dem Woking-Verzeichnis erhalte ich folgende Meldung:

make: Nichts für alle zu tun.

Dies ist die "Hello.c" -Datei:

#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);

Und "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

Ich habe alle Vorschläge ausprobiert und diese im Terminal bekommen:

[email protected]:/home/stupid/cpz/module$ pwd
/home/stupid/cpz/module
[email protected]:/home/stupid/cpz/module$ ls
hello.c  Makefile
[email protected]:/home/stupid/cpz/module$ make
make: Nothing to be done for `all'.
[email protected]:/home/stupid/cpz/module$ make clean
make: Nothing to be done for `clean'.
[email protected]:/home/stupid/cpz/module$ make clean all
make: Nothing to be done for `clean'.
make: Nothing to be done for `all'.
[email protected]:/home/stupid/cpz/module$ ls
hello.c  Makefile
[email protected]:/home/stupid/cpz/module$ make
make: Nothing to be done for `all'.
[email protected]:/home/stupid/cpz/module$ vi hello.c  # modified again
[email protected]:/home/stupid/cpz/module$ make clean
make: Nothing to be done for `clean'.
[email protected]:/home/stupid/cpz/module$ make
make: Nothing to be done for `all'.
4
user55111

Machen Sie Arbeiten auf Basis von Zeitstempeln. Wenn Sie einige Ihrer Quelldateien ändern, müssen Sie sie kompilieren und das Bild entsprechend erstellen. Wenn Sie die Quelldatei nicht ändern, hat der Compiler nichts mit Ihrem Projekt zu tun. make funktioniert nicht wie gcc, um jedes Mal zu kompilieren, ob ein neuer Build erforderlich ist oder nicht. Dies ist einer der vielen Vorteile der Verwendung von make für Ihr Projekt. 

6
incompetent
  1. make clean und dann wieder make
  2. Überprüfen Sie, ob Leerzeichen und Registerkarten gemäß dem Dateiformat der Marke vorhanden sind 
  3. Überprüfen Sie den Pfad der Kernel-Bibliotheken
22
Dilip Kumar

Der Compiler sagt Ihnen einfach, dass Ihr Code bereits kompiliert wurde und dass sich in Ihrem Code keine Änderungen befinden (er ist auf dem neuesten Stand), und dann nicht kompiliert. Ist eine integrierte Funktion von Compilern. Wenn in der Quellcodedatei keine Änderungen vorgenommen werden, verschwenden die Compiler keine Zeit.

Verwenden Sie make clean before, um make zu ändern oder Hello.c zu ändern und Ihr Projekt zu erstellen.

2
LPs

Sie sollten Platz in Ihrem Makefile entfernen. In Makefile nur Tabulatoren verwenden.

Ich habe Ihren Code erneut getestet und funktioniert mit Tab

2
Hoang Pham

Versuchen Sie, die ausführbare Datei (./a.out) zu löschen und erneut zu kompilieren! Möglicherweise haben Sie etwas an einer Funktion geändert, und make kann sie nicht sehen 

0
sofronas

Nur für den Fall, dass jemand das gleiche Problem wie ich hat: 

Eclipse kann nicht ordnungsgemäß erstellt werden, wenn einer Ihrer Ordner denselben Namen wie die ausführbare Datei hat. Wenn dies der Fall ist, wird unabhängig von dem, was Sie tun, immer die Meldung "Nichts zu tun" angezeigt. Die Lösung besteht darin, den Ordner oder die ausführbare Datei umzubenennen. Details finden Sie hier .

0
user463035818