2017-06-19 5 views
1

Ich versuche ein Kernelmodul zu bauen. Ich bin auf Fedora 25kein solcher Datei- oder Verzeichnisfehler. Was ist falsch?

Hier ist meine Makefile:

obj-m += simple.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 

Dies ist die simple.c Datei:

#include <linux/init.h> 
#include <linux/module.h> 
#include <linux/kernel.h> 

/* This function is called when the module is loaded. */ 
int simple_init(void) 
{ 
    printk(KERN_INFO "Loading Module\n"); 

    return 0; 
} 

/* This function is called when the module is removed. */ 
void simple_exit(void) { 
printk(KERN_INFO "Removing Module\n"); 
} 

/* Macros for registering module entry and exit points. */ 
module_init(simple_init); 
module_exit(simple_exit); 

MODULE_LICENSE("GPL"); 
MODULE_DESCRIPTION("Simple Module"); 
MODULE_AUTHOR("SGG"); 

Der Fehler Ich erhalte nach dem make Befehl:

make -C /lib/modules/4.11.3-202.fc25.x86_64/build M=/home/nubian/Downloads/ch02/ch2 modules 
make[1]: *** /lib/modules/4.11.3-202.fc25.x86_64/build: No such file or directory. Stop. 
Makefile:7: recipe for target 'default' failed 
make: *** [default] Error 2 
+0

'/ lib/modules/4.11.3-202.fc25.x86_64/build' sollte ein Link zu dem Verzeichnis sein, in dem Ihre Kernelmodule erstellt werden. Ist es? Siehe http://elixir.free-electronics.com/linux/v4.9.33/source/README#L124 – stark

+0

Dies ist die Nachricht, die ich erhalte, wenn ich versuche, kernel-devel zu installieren: Letzte Ablaufprüfung der Metadaten: 1:09:07 vor am Mo Jun 19 12:26:54 2017. Paket kernel-devel-4.11.5-200.fc25.x86_64 ist bereits installiert und überspringt. –

+0

Beachten Sie, dass Sie den Kernel '4.11.3-202.fc25' ausführen, aber das Paket' kernel-devel-4.11.5-200.fc25' installiert haben. Diese stimmen nicht überein, daher kann Ihr Build nicht erfolgreich sein. Vielleicht haben Sie Ihre Pakete auf einen neueren Kernel aktualisiert, aber haben Ihr System noch nicht neu gestartet, so dass Sie diesen Kernel nicht wirklich ausführen? – MadScientist

Antwort

0

Sie sollten immer $(MAKE) nie make verwenden, wenn Sie eine rekursive make aufrufen. Das ist jedoch nicht dein Problem.

Ihr Problem ist, dass Sie nicht die Modul-Build-Umgebung für Ihren derzeit laufenden Kernel installiert haben. Wenn Sie es installieren, erstellt es die Verzeichnisse, die Sie benötigen, um Module für Ihren Kernel zu erstellen.

Siehe zum Beispiel den yum install Befehl unter this page.

+0

Hallo, danke für deine Hilfe. Ich habe das Paket kernel-devel bereits installiert und habe immer noch dieselbe Fehlermeldung. –

+0

Dann darf Ihr laufender Kernel kein normal installierter Fedora-Kernel sein. Der '$ (shell uname -r)' Befehl gibt die aktuell laufende Version des Kernels zurück und das ist das Verzeichnis, das das Makefile zu finden versucht. – MadScientist

Verwandte Themen