Du bist nicht angemeldet.

meschi

Fortgeschrittener

  • »meschi« ist der Autor dieses Themas

Beiträge: 263

Registrierungsdatum: 23.08.2011

Wohnort: /

Danksagungen: 40

  • Private Nachricht senden

1

25.10.2011, 19:51

linux/module.h

Hallo,
Mein Problem ist, dass ich beim laden des headers linux/modules.h einen not found error bekomme.
Sprache ist C, der #include ist richtig (#include <linux/modules.h>)
1. Ich will meinen kernel nicht neu kompillieren (wird überall empfohlen)
2. Ich hab schon verschiedene möglichkeiten getestet, ein Syntaxfehler ist es auch nicht
3. Ja, ich hab die Header installiert (sie sind auf /usr/src/linux-headers-2.6.38-8/include/linux/module.h)

Wieso findet er das nicht?
Muss da ein symbolic link in den include ordner oder was?

tom

Schüler

Beiträge: 54

Registrierungsdatum: 20.06.2011

Danksagungen: 18

  • Private Nachricht senden

2

25.10.2011, 19:58

Sucht der Compiler auch im richtigen Verzeichnis? Standardmässig inkludiert der ja /usr/include.

Was passiert, wenn du die includes des kernel-sources nach /usr/include kopierst?
Also so: sudo cp -R /usr/src/linux-headers-3.0.0-12/include/linux/* /usr/include/linux/

Ausserdem heisst der Header bei mir module.h, und nicht modules.h

meschi

Fortgeschrittener

  • »meschi« ist der Autor dieses Themas

Beiträge: 263

Registrierungsdatum: 23.08.2011

Wohnort: /

Danksagungen: 40

  • Private Nachricht senden

3

25.10.2011, 20:06

da vertippe ich mich immer. aber ich include ihn richtig. ich teste das mal. danke.

meschi

Fortgeschrittener

  • »meschi« ist der Autor dieses Themas

Beiträge: 263

Registrierungsdatum: 23.08.2011

Wohnort: /

Danksagungen: 40

  • Private Nachricht senden

4

25.10.2011, 20:12

Sollte funktionieren...
Aber das kann doch nicht Sinn der Sache sein :D
Dass ich zum Programmieren erstmal random Dateien verschieben muss...
Programmierst du Kernel-Module?

tom

Schüler

Beiträge: 54

Registrierungsdatum: 20.06.2011

Danksagungen: 18

  • Private Nachricht senden

5

25.10.2011, 20:25

Ich programmiere eigentlich keine Kernel-Module, aber schau mir hin und wieder mal den Quelltext vom Kernel an.

Erik

Profi

Beiträge: 1 274

Registrierungsdatum: 22.06.2011

Wohnort: Deutschland ;)

Danksagungen: 307

  • Private Nachricht senden

6

25.10.2011, 20:25

Naja du kannst bestimmt auch Verzeichnisse hinzufügen, in denen der sucht, oder?
Beste Webite im Internet ( ͡° ͜ʖ ͡°)
xinra.de

Patrick

Profi

Beiträge: 694

Danksagungen: 168

  • Private Nachricht senden

7

27.10.2011, 15:33

Ja, man kann „Header Search Paths” hinzufügen.
Geht glaub ich über C_INCLUDE_PATH bzw. CPLUS_INCLUDE_PATH oder so.
Ex ungue leonem.

War der Beitrag für dich hilfreich?
Dann drück auf .

meschi

Fortgeschrittener

  • »meschi« ist der Autor dieses Themas

Beiträge: 263

Registrierungsdatum: 23.08.2011

Wohnort: /

Danksagungen: 40

  • Private Nachricht senden

8

31.01.2012, 01:15

Ich habs hinbekommen, der Thread kann geschlossen werden.

Simon

Profi

Beiträge: 725

Registrierungsdatum: 14.06.2011

Danksagungen: 210

  • Private Nachricht senden

9

31.01.2012, 01:16

Was war denn die Lösung?

meschi

Fortgeschrittener

  • »meschi« ist der Autor dieses Themas

Beiträge: 263

Registrierungsdatum: 23.08.2011

Wohnort: /

Danksagungen: 40

  • Private Nachricht senden

10

31.01.2012, 01:21

In linux gibt es ab kernel 2.6.* ein spezielles kbuild system, das durch das Makefile getriggert wird.
Das makefile sieht dann so aus:

Quellcode

1
2
obj−m += filename.o
all:        make −C /lib/modules/$(shell uname −r)/build M=$(PWD) modulesclean:        make −C /lib/modules/$(shell uname −r)/build M=$(PWD) clean



Beim normalen Kompilieren werden die userspace-Header included, beim kernelspace kompillieren die kernelspace-Header.