[gelöst] LIRC Treiber lassen sich nicht compilieren (Kernel 2.6.26)

  • Hallo,


    folgende Situation:


    Kernel 2.6.26
    gcc 4.2.3


    lirc_serial läßt sich kompilieren;
    lirc_dev nicht


    Folgende Fehlermeldung:


    make -f scripts/Makefile.build obj=/usr/src/lirc-0.8.3/drivers/lirc_dev
    gcc -Wp,-MD,/usr/src/lirc-0.8.3/drivers/lirc_dev/.lirc_dev.o.d -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.2.3/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Os -fno-stack-protector -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=k8 -mtune=generic -ffreestanding -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Iinclude/asm-x86/mach-generic -Iinclude/asm-x86/mach-default -fomit-frame-pointer -Wdeclaration-after-statement -Wno-pointer-sign -DIRCTL_DEV_MAJOR=61 -DEXPORT_SYMTAB -DHAVE_CONFIG_H -I. -I. -I../.. -I/usr/src/lirc-0.8.3/drivers/lirc_dev/. -I/usr/src/lirc-0.8.3/drivers/lirc_dev/ -I/usr/src/lirc-0.8.3/drivers/lirc_dev/../.. -I/usr/src/lirc-0.8.3/drivers/lirc_dev/../.. -I/lib/modules/2.6.26/build//include/ -I/lib/modules/2.6.26/build//drivers/media/video/ -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(lirc_dev)" -D"KBUILD_MODNAME=KBUILD_STR(lirc_dev)" -c -o /usr/src/lirc-0.8.3/drivers/lirc_dev/.tmp_lirc_dev.o /usr/src/lirc-0.8.3/drivers/lirc_dev/lirc_dev.c
    /usr/src/lirc-0.8.3/drivers/lirc_dev/lirc_dev.c: In function 'cleanup':
    /usr/src/lirc-0.8.3/drivers/lirc_dev/lirc_dev.c:148: error: implicit declaration of function 'class_device_destroy'
    /usr/src/lirc-0.8.3/drivers/lirc_dev/lirc_dev.c: In function 'lirc_register_plugin':
    /usr/src/lirc-0.8.3/drivers/lirc_dev/lirc_dev.c:403: error: implicit declaration of function 'class_device_create'
    make[5]: *** [/usr/src/lirc-0.8.3/drivers/lirc_dev/lirc_dev.o] Fehler 1
    make[4]: *** [_module_/usr/src/lirc-0.8.3/drivers/lirc_dev] Fehler 2
    make[4]: Leaving directory `/usr/src/linux-2.6.26'
    make[3]: *** [lirc_dev.o] Fehler 2
    make[3]: Leaving directory `/usr/src/lirc-0.8.3/drivers/lirc_dev'
    make[2]: *** [all-recursive] Fehler 1
    make[2]: Leaving directory `/usr/src/lirc-0.8.3/drivers'
    make[1]: *** [all-recursive] Fehler 1
    make[1]: Leaving directory `/usr/src/lirc-0.8.3'
    make: *** [all] Fehler 2



    Weiß jemand, was da falsch läuft ?
    Über die Suche habe ich nichts gefunden.


    Danke für Eure Hilfe


    Jogibär

  • Du holst Dir die LIRC-sourcen (z.B. von hier), entpackst sie und kopierst den Patch in das Verzeichnis lirc-0.8.3
    Anschließend löscht Du die Zeilen oberhalb von "--- (blah, blah)" und lässt dann den Patch mit dem Befehl
    patch -p1 < 20_kcompat-2.6.26.patch
    auf die sourcen los. Ob es dann allerdings geht kann ich nicht sagen, da ich den Kernel 2.6.26 nicht installiert habe.
    Gruß,
    DrSat

  • Hallo,


    ich habe das Problem anscheinend gelöst.
    Bis jetzt funktioniert LIRC problemlos.


    1. Problem


    Der Kernel exportiert class_device_* nicht mehr .


    Lösung:


    Patch von folgender Seite laden:


    http://bugs.gentoo.org/231867 -> lirc-0.8.3-2.6.28.patch


    direkt im LIRC Verzeichnis anwenden:


    patch -p 1 < lirc-0.8.3-2.6.26.patch


    Jetzt lassen sich die Quellen übersetzen.


    2. Problem


    Einige Module lassen sich nicht laden, man bekommt etwa so eine Fehlermeldung:


    Error inserting lirc_serial Unknown symbol in module


    dmesg meldet folgendes:


    no symbol version for lirc_unregister_plugin
    Unknown symbol lirc_unregister_plugin


    Der Kernel kann die Module nicht laden und entladen


    Das Problem liegt daran, daß die Build-Scripte von lirc
    keine Modulabhängigkeiten mehr erzeugen können.
    (keine Ahnung warum)


    Lösung:


    http://www.vdrportal.de/board/print.php?threadid=78611&page=1&sid=


    Zitat:


    Temporary, you can add the lirc kernel modules to the kernel:
    - create the directory tree linux/drivers/lirc/drivers/lirc_dev
    - copy lirc/drivers/lirc.h to linux/drivers/lirc/drivers
    - copy lirc/drivers/kcompat.h to linux/drivers/lirc/drivers
    - copy lirc/drivers/lirc_dev/lirc_dev.h to linux/drivers/lirc and linux/drivers/lirc/drivers/lirc_dev
    - copy lirc/drivers/lirc_dev/lirc_dev.c to linux/drivers/lirc
    - copy lirc/drivers/lirc_serial/lirc_serial.c to linux/drivers/lirc
    - add a line 'obj-y += lirc/' to the end of linux/drivers/Makefile
    - create linux/drivers/lirc/Makefile


    obj-m += lirc_dev.o lirc_serial.o
    KBUILD_CFLAGS += -DIRCTL_DEV_MAJOR=61



    If you need more options to build the modules, add they also to KBUILD_CFLAGS
    - rebuild and install the kernel. Usually it isn't necessary to do a make clean


    regards
    e9hack


    Zitat Ende


    Wie oben angegeben Verzeichnis in den Kernelquellen anlegen, Dateien reinkopieren,
    Makefile mit den beiden Zeilen erstellen.
    Dann Kernel neu kompilieren,Module installieren, Kernel installieren und neu starten.


    Fertig. LIRC läuft wieder.


    Junge, Junge habe fast die ganze Nacht gefummelt.



    Jogibär

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!