Fehler beim kompilieren eines Moduls

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
cmon
Beiträge: 3
Registriert: 25.09.2004 13:50:56
Wohnort: Heidelberg

Fehler beim kompilieren eines Moduls

Beitrag von cmon » 25.09.2004 15:10:09

Hallo,

ich habe eine Philips Webcam, für die ich ein Modul kompilieren muss.
Die Anleitung hab ich genau befolgt, aber wenn ich am Schluss
make modules mache, kommt folgender Fehler:

sirius:/usr/src/kernel-source-2.4.25# make modules
make -C kernel CFLAGS="-D__KERNEL__ -I/usr/src/kernel-source-2.4.25/include -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O2 -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include /usr/src/kernel-source-2.4.25/include/linux/modversions.h" MAKING_MODULES=1 modules
make[1]: Entering directory `/usr/src/kernel-source-2.4.25/kernel'
make[1]: Für das Ziel »modules« ist nichts zu tun.
make[1]: Leaving directory `/usr/src/kernel-source-2.4.25/kernel'
make -C drivers CFLAGS="-D__KERNEL__ -I/usr/src/kernel-source-2.4.25/include -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O2 -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include /usr/src/kernel-source-2.4.25/include/linux/modversions.h" MAKING_MODULES=1 modules
make[1]: Entering directory `/usr/src/kernel-source-2.4.25/drivers'
make -C acpi modules
make[2]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/acpi'
make[2]: Für das Ziel »modules« ist nichts zu tun.
make[2]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/acpi'
make -C block modules
make[2]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/block'
make[2]: Für das Ziel »modules« ist nichts zu tun.
make[2]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/block'
make -C cdrom modules
make[2]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/cdrom'
make[2]: Für das Ziel »modules« ist nichts zu tun.
make[2]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/cdrom'
make -C char modules
make[2]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/char'
make -C drm modules
make[3]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/char/drm'
make[3]: Für das Ziel »modules« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/char/drm'
make -C pcmcia modules
make[3]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/char/pcmcia'
make[3]: Für das Ziel »modules« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/char/pcmcia'
make[2]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/char'
make -C hotplug modules
make[2]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/hotplug'
make[2]: Für das Ziel »modules« ist nichts zu tun.
make[2]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/hotplug'
make -C ide modules
make[2]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/ide'
make -C arm modules
make[3]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/ide/arm'
make[3]: Für das Ziel »modules« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/ide/arm'
make -C legacy modules
make[3]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/ide/legacy'
make[3]: Für das Ziel »modules« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/ide/legacy'
make -C pci modules
make[3]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/ide/pci'
make[3]: Für das Ziel »modules« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/ide/pci'
make -C ppc modules
make[3]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/ide/ppc'
make[3]: Für das Ziel »modules« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/ide/ppc'
make -C raid modules
make[3]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/ide/raid'
make[3]: Für das Ziel »modules« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/ide/raid'
make[2]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/ide'
make -C media modules
make[2]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/media'
make -C radio modules
make[3]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/media/radio'
make[3]: Für das Ziel »modules« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/media/radio'
make -C video modules
make[3]: Entering directory `/usr/src/kernel-source-2.4.25/drivers/media/video'
make[3]: *** Keine Regel vorhanden, um das Target »/usr/src/kernel-source-2.4.25/include/linux/modversions.h«,
benötigt von »videodev.o«, zu erstellen. Schluss.
make[3]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/media/video'
make[2]: *** [_modsubdir_video] Fehler 2
make[2]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers/media'
make[1]: *** [_modsubdir_media] Fehler 2
make[1]: Leaving directory `/usr/src/kernel-source-2.4.25/drivers'
make: *** [_mod_drivers] Fehler 2
sirius:/usr/src/kernel-source-2.4.25#


Ich habe dasselbe vor wenigen Jahren schon einmal gemacht, da hat es keine
Probleme gegeben.
Dasselbe hab ich auch mit Kernel 2.4.27 gemacht, das gleiche Problem.

Wer weiß Rat ?

Benutzeravatar
rab
Beiträge: 225
Registriert: 05.11.2003 12:05:09
Wohnort: zürich (CH)

Beitrag von rab » 25.09.2004 15:25:55

Erstmal: herzlich wilkommen im debianforum!

- hast du da eventuell vergessen, ein ./configure oder ähnliches durchzuführen?
- wie bist genau vorgegangen?

in dem log sehe ich fast zu Beginn schon Meldungen wie "für das ziel modules ist nichts zu tun", was ich am ehesten als fehlende Regel für make deuten würde...

bring mehr Infos, dann kann deinem Problem besser abhilfe geschaffen werden. Sieht auf alle Fälle nicht unlösbar aus.
kraaahh!!!

cmon
Beiträge: 3
Registriert: 25.09.2004 13:50:56
Wohnort: Heidelberg

Beitrag von cmon » 25.09.2004 15:44:19

Danke fürs Willkommen :-)

OK, hier die Anleitung:

** Installation 2.4.25 (probably works on 2.4.26 as well)

- Download the tarball, extract (you probably already did this). I assume
it is extracted in your homedirectory.

- Go to your kernel sources (usually located in /usr/src/linux)
# cd /usr/src/linux

- Apply the proper patch for your kernel; this will modify the USB build
structure
# patch -p1 -s < ~/pwcx-9.0/patch-2.4.25

- Copy the proper libpwcx.a to the directory; see the various
subdirectories for builds of the library. You may also have to rename
the library while copying, e.g.
# cp ~/pwcx-9.0/mipsel/libpwcx-mips4.a drivers/usb/libpwcx.a

- Copy the glue code to the directory
# cp ~/pwcx-9.0/pwcx/*.[ch] drivers/usb

- Start up your kernel configurator
# make menuconfig
or
# make xconfig

- Go the USB section; you will find a "PWCX decompressor entry";
enable it as module

- Build your modules:
# make modules modules_install

- If all went well, you now have a working PWCX on your system!

!! Do not execute a 'make dep' or 'make clean' in your kernel source tree!
!! That will remove all .a files :-(
--------------------

Genau das hab ich befolgt, und zwar richtig, schließlich bin ich eigentlich kein Anfänger :wink:
Ich habe Debian testing (sarge).
./configure geht hier gar nicht.
Fehlt eventuell ein Packet im Debian-System ?
Oder ist da ein Fehler in der Kernel-Source ? Aber eigentlich hätte der Fehler dann bei sehr vielen
Usern auftreten müssen...

cmon
Beiträge: 3
Registriert: 25.09.2004 13:50:56
Wohnort: Heidelberg

Problem gelöst....aber jetzt neues Problem :-(

Beitrag von cmon » 27.09.2004 11:01:04

So, ich hab das Problem jetzt selbst gelöst,
indem ich vor dem "make modules" ein "make dep" gemacht hab,
obwohl in der Anleitung steht, dass man das nicht machen soll :-/
Nun kompiliert das Modul, aber beim laden des Moduls erscheint:

sirius:/lib/modules/2.4.27/kernel/drivers/usb# ls
pwc.o pwcx.o
sirius:/lib/modules/2.4.27/kernel/drivers/usb# insmod pwcx.o
pwcx.o: The module you are trying to load (pwcx.o) is compiled with a gcc
version 2 compiler, while the kernel you are running is compiled with
a gcc version 3 compiler. This is known to not work.

Also das System behauptet, ich hätte das Modul mit dem alten gcc kompiliert,
jedoch erscheint, wenn ich "gcc -v" mache:

sirius:~# gcc -v
Lese Spezifikationen von /usr/lib/gcc-lib/i486-linux/3.3.4/specs
Konfiguriert mit: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i486-linux
Thread-Modell: posix
gcc-Version 3.3.4 (Debian 1:3.3.4-6sarge1)

Das ist doch der neue gcc !?!
Also ist die Fehlermeldung falsch, oder aus irgendwelchen Gründen wird doch
der alte gcc verwendet....

Hat jemand ne Idee ?

Antworten