Kernel | Fehler beim kompilieren
Hallo Liste, bin seit heute morgen dabei ein Kernelupdate auf 2.4.20 zu machen. Das funktioniert auch soweit ganz gut. Nur wenn ich versuche das bttv Modul zu kompilieren, bekomme ich die folgende Fehlermeldung: #<SNIP> msp3400.c: In function `msp3400c_setstereo': msp3400.c:503: duplicate array index in initializer msp3400.c:503: (near initialization for `strmode') msp3400.c:504: duplicate array index in initializer msp3400.c:504: (near initialization for `strmode') msp3400.c:505: duplicate array index in initializer msp3400.c:505: (near initialization for `strmode') msp3400.c:506: duplicate array index in initializer msp3400.c:506: (near initialization for `strmode') #<SNAP> in der Datei msp3400.c steht dort folgendes. <SNIP> static void msp3400c_setstereo(struct i2c_client *client, int mode) { static char *strmode[] = { [ 0 ... 15 ] = "invalid", [ VIDEO_SOUND_MONO ] = "mono", [ VIDEO_SOUND_STEREO ] = "stereo", [ VIDEO_SOUND_LANG1 ] = "lang1", [ VIDEO_SOUND_LANG2 ] = "lang2", }; struct msp3400c *msp = client->data; int nicam=0; /* channel source: FM/AM or nicam */ int src=0; .... <SNAP> Meiner bescheidenen Meinung nach sollte das richtig sein. *schulterzuck* Der Kompileraufruf war der folgende (böse umgebrochen) <SNIP> gcc -D__KERNEL__ -I/usr/src/linux-2.4.20.SuSE/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Wno-sign-compare -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -nostdinc -iwithprefix include -DKBUILD_BASENAME=msp3400 -c -o msp3400.o msp3400.c <SNAP> linux# gcc -v Reading specs from /usr/lib/gcc-lib/i486-suse-linux/2.95.3/specs gcc version 2.95.3 20010315 (SuSE) Hat mir irgendjemand irgendeine Idee/Hinweis/Denkanstoss oder einfach 2 Cent? Danke Daniel -- "Those who desire to give up Freedom in order to gain Security, will not have, nor do they deserve, either one." --Thomas Jefferson
Hi, 0n 03/03/19@19:23 Daniel Lord told me:
Hallo Liste,
bin seit heute morgen dabei ein Kernelupdate auf 2.4.20 zu machen. Das funktioniert auch soweit ganz gut. Nur wenn ich versuche das bttv Modul zu kompilieren, bekomme ich die folgende Fehlermeldung:
Hat mir irgendjemand irgendeine Idee/Hinweis/Denkanstoss oder einfach 2 Cent?
Ich weiss es nicht aber bei bttv ist derzeit einiges im Umbruch, auch um die neuen Connexant Chips zu unterstuetzen, die jetzt auf den analog Karten verwendet werden. Kann sein das da was durchgerutscht ist. Ich wuerde mal einen Blick ins changelog werfen. Vielleicht wirst Du hierdurch auch schlauer: http://bytesex.org/bttv -- bye maik
Hi, On Wed, Mar 19, 2003 at 08:17:08PM +0100, Maik Holtkamp wrote:
Ich weiss es nicht aber bei bttv ist derzeit einiges im Umbruch, auch um die neuen Connexant Chips zu unterstuetzen, die jetzt auf den analog Karten verwendet werden.
Kann sein das da was durchgerutscht ist. Ich wuerde mal einen Blick ins changelog werfen.
Hmm, im changlog steht das die genau an dem Modul gedreht haben, das bei mir jetzt die Fehler produziert *grml*
Vielleicht wirst Du hierdurch auch schlauer: http://bytesex.org/bttv
leider nicht viel schlauer :( Interessant finde ich aber, das der Standart SMP Kernel von SuSE funktioniert. (Zumindest die bttv Geschichte.) Wenn ich jetzt aber ein cat /proc/config.gz | gunzip > /usr/src/linux/.config mache und danach aus den SuSE Kernelquellen einen Kernel bauen will funktioniert das wieder nicht. *hmm* Diesmal meckert er noch über einige weitere Unstimmigkeiten. Teilweise kann ich die beseitigen indem ich die nichtbenötigten Module abwähle. Andere verschwinden wenn ich statt "make xconfig" "make menuconfig" verwende. Bitte sagt jetzt nicht ich soll make config verwenden :( Das verkrafte ich heute abend nicht mehr ;) Gruss Daniel -- "Those who desire to give up Freedom in order to gain Security, will not have, nor do they deserve, either one." --Thomas Jefferson
Hallo, On Wed, 19 Mar 2003, Daniel Lord wrote:
bin seit heute morgen dabei ein Kernelupdate auf 2.4.20 zu machen. Das funktioniert auch soweit ganz gut. Nur wenn ich versuche das bttv Modul zu kompilieren, bekomme ich die folgende Fehlermeldung:
#<SNIP> msp3400.c: In function `msp3400c_setstereo': msp3400.c:503: duplicate array index in initializer msp3400.c:503: (near initialization for `strmode') msp3400.c:504: duplicate array index in initializer msp3400.c:504: (near initialization for `strmode') msp3400.c:505: duplicate array index in initializer msp3400.c:505: (near initialization for `strmode') msp3400.c:506: duplicate array index in initializer msp3400.c:506: (near initialization for `strmode') #<SNAP>
in der Datei msp3400.c steht dort folgendes.
<SNIP> static void msp3400c_setstereo(struct i2c_client *client, int mode) { static char *strmode[] = { [ 0 ... 15 ] = "invalid", [ VIDEO_SOUND_MONO ] = "mono", [ VIDEO_SOUND_STEREO ] = "stereo", [ VIDEO_SOUND_LANG1 ] = "lang1", [ VIDEO_SOUND_LANG2 ] = "lang2", };
Das ist aber kein Vanilla 2.4.20 Kernel! Da sieht das so aus: ==== drivers/media/video/msp3400.c ==== static char *strmode[] = { "0", "mono", "stereo", "3", "lang1", "5", "6", "7", "lang2" }; ==== ==== include/linux/videodev.h ==== #define VIDEO_SOUND_MONO 1 #define VIDEO_SOUND_STEREO 2 #define VIDEO_SOUND_LANG1 4 #define VIDEO_SOUND_LANG2 8 ==== Da im obigen code durch das '[ 0 ... 15 ]' schon die indizes vergeben sind, ist die Fehlermeldung logisch. Sieht nach nem Bug in einem der SuSE-patches aus... Bitte schau aber mal in dein include/linux/videodev.h ob die defines dort ebenso sind.
Meiner bescheidenen Meinung nach sollte das richtig sein. *schulterzuck*
s.o. -dnh -- 4: Garbage Collection Windows 95 (Kristian Köhntopp)
participants (3)
-
Daniel Lord
-
David Haller
-
Maik Holtkamp