Ich habe Probleme beim Kompilieren eines Kernel-Moduls für einen Raspberry Pi. Ich möchte ein "Hallo Welt" -Kernelmodul mit dem Raspberry Pi selbst kompilieren.Wie kompiliere ich ein Kernelmodul für Raspberry Pi?
Ich benutze Raspbian Wheezy 3.6.11 +.
Ich versuchte, die Anweisungen unter http://elinux.org/RPi_Kernel_Compilation zu folgen.
Hier ist das Makefile ich verwende:
obj-m += hello-1.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
Hier ist der Quellcode für hallo-1.c:
/*
* hello-1.c - The simplest kernel module.
*/
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
int init_module(void)
{
printk(KERN_INFO "Hello world 1.\n");
/*
* A non 0 return means init_module failed; module can't be loaded.
*/
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "Goodbye world 1.\n");
}
Hier ist, was ich bekomme, wenn ich versuche, das Projekt zu machen:
[email protected]:/home/pi/hello-module# make
make -C /lib/modules/3.6.11+/build M=/home/pi/hello-module modules
make: *** /lib/modules/3.6.11+/build: No such file or directory. Stop.
make: *** [all] Error 2
ich versuchte, das Build-Verzeichnis auf /lib/modules/3.6.11+ Erstellen
make -C /lib/modules/3.6.11+/build M=/home/pi/hello-module modules
make[1]: Entering directory `/lib/modules/3.6.11+/build'
make[1]: *** No rule to make target `modules'. Stop.
make[1]: Leaving directory `/lib/modules/3.6.11+/build'
make: *** [all] Error 2
Ich habe GNU make 3.81 und gcc (Debian 4.6.3-14 + rpi1) 4.6.3 installiert. Ich installierte auch die Linux-Quelle
sudo apt-get install linux-source
Irgendwelche Ideen auf, was mit ich tun könnte, um dies zu kompilieren?
Auf dem Raspberry gibt es kein Unterverzeichnis "build" im Modulverzeichnis. Ich konnte das auf meinem RPI bestätigen. Daher die Frage: Was ist der "richtige" Weg, um die erforderlichen Daten für den Modulaufbau zu erstellen? – Black
Da Sie bereits einige konkrete Antworten erhalten haben, hier ein kurzer Überblick über die Gründe für das Problem. Sie verwenden den Kernel der Raspberry Pi-Foundation (das Raspbian-Firmware-Paket in Raspbian), der keine Header zur Verfügung stellt, die Sie zum Erstellen von Kernel-Modulen benötigen. Sie können sie entweder mit dem Tool [rpi-source] (https://github.com/notro/rpi-source/wiki) installieren. Oder wechseln Sie stattdessen zu den Kernel + Headern von Raspians (fügen Sie einen 'firmware' Eintrag nach' wheezy main contrib ... 'in'/etc/apt/sources.lst' hinzu, aktualisieren Sie Pakete, entfernen Sie 'raspberrypi-firmware', installieren Sie 'raspberrypi- firmware-nokernel'. – nh2
Tolle Anweisungen in dieser [Frage und die Antwort] (http://raspberrypi.stackexchange.com/q/39845/26266) Ich kompilierte in [ein Skript] (https://github.com/x29a /kernel/blob/master/rpi/prepare.sh) – x29a