PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SAA7134 Treiber kompilieren


dk5hr
09.12.02, 15:53
Hallo.

Ich habe für meine TV-Karte den Kernel erfolgreich gepatcht und muss jetzt das Treiber-Modul
kompilieren (siehe hier) (http://bytesex.org/saa7134/).

Nach der Eingabe von 'make' erscheint folgender Fehler:

make -C /lib/modules/2.4.20/build SUBDIRS=/usr/src/saa7134-0.2.1 modules
make[1]: Entering directory `/usr/src/linux-2.4.20'
make -C /usr/src/saa7134-0.2.1 CFLAGS="-D__KERNEL__
-I/usr/src/linux-2.4.20/include -Wall -Wstrict-prototypes -Wno-trigraphs
-O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe
-mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include
/usr/src/linux-2.4.20/include/linux/modversions.h" MAKING_MODULES=1
modules
make[2]: Entering directory `/usr/src/saa7134-0.2.1'
gcc -D__KERNEL__ -I/usr/src/linux-2.4.20/include -Wall
-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common
-fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686
-DMODULE -DMODVERSIONS -include
/usr/src/linux-2.4.20/include/linux/modversions.h -nostdinc
-iwithprefix include -DKBUILD_BASENAME=video_buf -DEXPORT_SYMTAB -c
video-buf.c
In file included from video-buf.c:34:
video-buf.h:137: field `field' has incomplete type
video-buf.h:167: field `type' has incomplete type
video-buf.h:189: warning: parameter has incomplete type
video-buf.h:194: warning: parameter has incomplete type
video-buf.c:343: parameter `type' has incomplete type
video-buf.c:343: conflicting types for `videobuf_queue_init'
video-buf.h:189: previous declaration of `videobuf_queue_init'
video-buf.c:412: parameter `type' has incomplete type
video-buf.c:412: conflicting types for `videobuf_status'
video-buf.h:194: previous declaration of `videobuf_status'
video-buf.c: In function `videobuf_status':
video-buf.c:415: structure has no member named `m'
video-buf.c:435: structure has no member named `field'
video-buf.c:436: incompatible types in assignment
make[2]: *** [video-buf.o] Error 1
make[2]: Leaving directory `/usr/src/saa7134-0.2.1'
make[1]: *** [_mod_/usr/src/saa7134-0.2.1] Error 2
make[1]: Leaving directory `/usr/src/linux-2.4.20'
make: *** [default] Error 2

Weiß jemand woran das liegen könnte? :confused:

MfG

dk5hr

Powerful3D
09.12.02, 20:15
Da du sicher keine lust hast länger auf ne antwort warten zu müssen, hab ich dir mal kurz einen Link rausgesucht, wo der kram schritt für schritt erklährt wird.
http://www.ossi-industries.de/document/md9717.html

so wie es aussieht hast du nur ein paar module vergessen vorher zu installieren bzw. kompilieren :)

MfG P3D

dk5hr
10.12.02, 13:33
@Powerful3D: Vielen Dank für den Link.

Aber ich habe ja schon alles bis zum Kompilieren des Treibers gemacht.
Und das ist der Punkt der nicht klappt (siehe obige Fehlermeldung).
Weiß niemand wo der Fehler liegen könnte?

MfG dk5hr

slime
10.12.02, 16:34
hast du vorher mal ein "make clean dep" gemacht?
anderenfalls ist da beim kernel-bauen ja nicht alles auf dem neusten stand.

dk5hr
10.12.02, 17:52
Wenn ich 'make clean dep' im Treiberverzeichnis eingebe, löscht er ein paar Dateien und gibt folgende Meldung aus:
make: *** No rule to make target `dep'. Stop.

Oder soll ich 'make clean dep' vorm Kompilieren des Kernels eingeben?

MfG dk5hr

slime
10.12.02, 19:00
mmh sorry,
da hab ich mich wohl vertan,
ich dachte du hättest den treiber in den kernel reingepatcht.

das "make clean dep" bezog sich auf den kernel.

dk5hr
10.12.02, 19:13
Also, ich hab den Kernel mit den Patches von http://bytesex.org/saa7134 gepatcht.
Nach einem neuen Kompilieren des Kernels muss ich noch extra einen Treiber als Modul kompilieren.
Das Patchen und Neukompilieren des Kernels verlief erfolgreich, nur beim Kompilieren des Treibers kommt oben beschriebene Fehlermeldung.

Steve
10.12.02, 19:30
Ist das ein Vanilla 2.4.20 ?

dk5hr
10.12.02, 20:39
Ja. Die originalen Vanilla 2.4.20 Sources bloß mit den Patches gepatcht.

dk5hr
12.12.02, 19:24
Heute habe ich den neuen Treiber (Version 0.2.2) runtergeladen und versucht ihn zu kompilieren.
Allerdings kommt wieder ein ähnlicher Fehler wie oben beschrieben, diesmal ist er sogar ein bisschen länger:

make -C /lib/modules/2.4.20/build SUBDIRS=/usr/src/saa7134-0.2.2 modules
make[1]: Entering directory `/usr/src/linux-2.4.20'
make -C /usr/src/saa7134-0.2.2 CFLAGS="-D__KERNEL__ -I/usr/src/linux-2.4.20/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include /usr/src/linux-2.4.20/include/linux/modversions.h" MAKING_MODULES=1 modules
make[2]: Entering directory `/usr/src/saa7134-0.2.2'
gcc -D__KERNEL__ -I/usr/src/linux-2.4.20/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include /usr/src/linux-2.4.20/include/linux/modversions.h -nostdinc -iwithprefix include -DKBUILD_BASENAME=video_buf -DEXPORT_SYMTAB -c video-buf.c
In file included from video-buf.c:34:
video-buf.h:137: field `field' has incomplete type
video-buf.h:167: field `type' has incomplete type
video-buf.h:189: warning: parameter has incomplete type
video-buf.h:194: warning: `struct v4l2_buffer' declared inside parameter list
video-buf.h:194: warning: its scope is only this definition or declaration, which is probably not what you want
video-buf.h:194: warning: parameter has incomplete type
video-buf.h:196: warning: `struct v4l2_requestbuffers' declared inside parameter list
video-buf.h:197: warning: `struct v4l2_buffer' declared inside parameter list
video-buf.h:199: warning: `struct v4l2_buffer' declared inside parameter list
video-buf.h:201: warning: `struct v4l2_buffer' declared inside parameter list
video-buf.c:343: parameter `type' has incomplete type
video-buf.c:343: conflicting types for `videobuf_queue_init'
video-buf.h:189: previous declaration of `videobuf_queue_init'
video-buf.c:411: warning: `struct v4l2_buffer' declared inside parameter list
video-buf.c:412: parameter `type' has incomplete type
video-buf.c:412: conflicting types for `videobuf_status'
video-buf.h:194: previous declaration of `videobuf_status'
video-buf.c: In function `videobuf_status':
video-buf.c:413: dereferencing pointer to incomplete type
video-buf.c:414: dereferencing pointer to incomplete type
video-buf.c:415: dereferencing pointer to incomplete type
video-buf.c:416: dereferencing pointer to incomplete type
video-buf.c:417: dereferencing pointer to incomplete type
video-buf.c:419: dereferencing pointer to incomplete type
video-buf.c:419: `V4L2_BUF_FLAG_MAPPED' undeclared (first use in this function)
video-buf.c:419: (Each undeclared identifier is reported only once
video-buf.c:419: for each function it appears in.)
video-buf.c:424: dereferencing pointer to incomplete type
video-buf.c:424: `V4L2_BUF_FLAG_QUEUED' undeclared (first use in this function)
video-buf.c:428: dereferencing pointer to incomplete type
video-buf.c:428: `V4L2_BUF_FLAG_DONE' undeclared (first use in this function)
video-buf.c:435: dereferencing pointer to incomplete type
video-buf.c:436: dereferencing pointer to incomplete type
video-buf.c:437: dereferencing pointer to incomplete type
video-buf.c:438: dereferencing pointer to incomplete type
video-buf.c: At top level:
video-buf.c:443: warning: `struct v4l2_requestbuffers' declared inside parameter list
video-buf.c:444: conflicting types for `videobuf_reqbufs'
video-buf.h:196: previous declaration of `videobuf_reqbufs'
video-buf.c: In function `videobuf_reqbufs':
video-buf.c:447: dereferencing pointer to incomplete type
video-buf.c:449: dereferencing pointer to incomplete type
video-buf.c:453: dereferencing pointer to incomplete type
video-buf.c:463: dereferencing pointer to incomplete type
video-buf.c:464: dereferencing pointer to incomplete type
video-buf.c: At top level:
video-buf.c:472: warning: `struct v4l2_buffer' declared inside parameter list
video-buf.c:473: conflicting types for `videobuf_querybuf'
video-buf.h:197: previous declaration of `videobuf_querybuf'
video-buf.c: In function `videobuf_querybuf':
video-buf.c:474: dereferencing pointer to incomplete type
video-buf.c:476: dereferencing pointer to incomplete type
video-buf.c:476: dereferencing pointer to incomplete type
video-buf.c:478: dereferencing pointer to incomplete type
video-buf.c:480: dereferencing pointer to incomplete type
video-buf.c:480: warning: passing arg 1 of `videobuf_status' from incompatible pointer type
video-buf.c: At top level:
video-buf.c:486: warning: `struct v4l2_buffer' declared inside parameter list
video-buf.c:487: conflicting types for `videobuf_qbuf'
video-buf.h:199: previous declaration of `videobuf_qbuf'
video-buf.c: In function `videobuf_qbuf':
video-buf.c:497: dereferencing pointer to incomplete type
video-buf.c:499: dereferencing pointer to incomplete type
video-buf.c:499: dereferencing pointer to incomplete type
video-buf.c:501: dereferencing pointer to incomplete type
video-buf.c: At top level:
video-buf.c:529: warning: `struct v4l2_buffer' declared inside parameter list
video-buf.c:530: conflicting types for `videobuf_dqbuf'
video-buf.h:201: previous declaration of `videobuf_dqbuf'
video-buf.c: In function `videobuf_dqbuf':
video-buf.c:539: dereferencing pointer to incomplete type
video-buf.c:560: dereferencing pointer to incomplete type
video-buf.c:560: dereferencing pointer to incomplete type
video-buf.c:560: dereferencing pointer to incomplete type
video-buf.c:560: dereferencing pointer to incomplete type
video-buf.c:560: dereferencing pointer to incomplete type
video-buf.c:560: dereferencing pointer to incomplete type
video-buf.c:561: warning: passing arg 1 of `videobuf_status' from incompatible pointer type
make[2]: *** [video-buf.o] Error 1
make[2]: Leaving directory `/usr/src/saa7134-0.2.2'
make[1]: *** [_mod_/usr/src/saa7134-0.2.2] Error 2
make[1]: Leaving directory `/usr/src/linux-2.4.20'
make: *** [default] Error 2

Schade, dass die TV-Karte solche Probleme unter Linux macht. :(
Ich hoffe, dass mir jemand helfen kann.
Schliesslich will ich ja nicht immer zum Fernsehen Windoof booten :D
Wenn die TV-Karte endlich funktionieren würde, dann hätte ich einen Grund weniger Windows auf der Platte zu lassen ;)

MfG dk5hr

kippndreser
12.12.02, 22:47
Hallo!
so geht es nicht:
original Kernel unter /usr/src/linux-2.4.20
ge-patch-ter kernel unter /usr/src/linux-2.4.20-v4l


so geht es:
original Kernel unter /usr/src/linux-2.4.20-original gesichert
ge-patch-ter kernel unter /usr/src/linux-2.4.20

dann dann
Andreas

dk5hr
13.12.02, 12:04
Ich hab meinen Original 2.4.20 Kernel in /usr/src/linux-2.4.20 einfach gepatcht und neu kompiliert.
Funktioniert es deshalb nicht? :confused:

kippndreser
13.12.02, 13:06
seltsam.. bei mir trat derselbe Fehler wie bei dir auf, wenn ich den gepatchten Kernel in einem "anderen" Verzeichnis hatte, z.B. /usr/src/linux-2.4.20-v4l2/

Nachdem ich das nach /usr/src/linux-2.4.20/ umbenannt hatte, gings.

tu nochmal nachkontrollieren ob das mit dem Patchen auch wirklich hingehauen hat, ganz speziell
/usr/src/linux-2.4.20/include/linux/videodev2.h
Wenn die nicht da ist oder neues Datum hat ging was falsch.

dk5hr
13.12.02, 13:30
@kippndreser: Welche Patchs hast du benutzt? Ich hab nämlich alle von hier (http://bytesex.org/patches/2.4/) benutzt. Kann es vielleicht sein, dass ich gar nicht alle nehmen darf?

kippndreser
13.12.02, 23:29
Das hier ist der "Treiber" für die aldi-karte: http://bytesex.org/saa7134/saa7134-0.2.2.tar.gz
In diesem Archiv ist unter anderem eine README Datei.
da drin steht, daß man den kernel mit diesen beiden dateien patchen muß:
http://bytesex.org/patches/2.4/01_videodev-2.4.20.diff
http://bytesex.org/patches/2.4/11-v4l2-api-2.4.20.diff.gz

und damit sollte es klappen, bei mir gings zumindest.

dann dann
Andreas

p.s.: hast du die videodev2.h datei?

dk5hr
14.12.02, 08:20
Juhuuuuuu. Endlich hat es geklappt. :cool:
Mein Fehler war, dass ich mit allen Patchs den Kernel gepatcht habe.
Jetzt habe ich nur 01_videodev-2.4.20.diff (http://bytesex.org/patches/2.4/01_videodev-2.4.20.diff) und 11-v4l2-api-2.4.20.diff.gz (http://bytesex.org/patches/2.4/11-v4l2-api-2.4.20.diff.gz ) genommen
und es funktioniert einwandfrei. :D

Vielen Dank an alle, die geholfen haben.

MfG dk5hr

kippndreser
14.12.02, 13:30
@dh5kr:
na optimal!
Es ist aber trotzdem seltsam daß das nicht geht wenn man die anderen Patches auch einspielt, speziell wenn das patchen keine Fehler oder Konflikte fabriziert.

marce
22.06.09, 10:14
#18 als Spam gemeldet.