Modul für 3c2000 für Kernel 2.4.21 übersetzen
Hallo Liste, ich muss das Modul für meine Netzwerkarte 3c2000 für den Kernel 2.4.21 kompilieren. Dabei kommt bei folgendem Aufruf ein Fehler: ################# gcc -D__KERNEL__ -Wall -Wstrict-prototypes -O2 -DMODULE -I. -DSK_USE_CSUM -I /usr/src/linux/include -include /usr/src/linux/include/linux/modversions.h -DMODVERSIONS -D__SMP__ -c -o skgepnmi.o skgepnmi.c In file included from /usr/src/linux/include/linux/list.h:3, from /usr/src/linux/include/linux/module.h:12, from h/skdrv1st.h:146, from skgepnmi.c:439: /usr/src/linux/include/asm/system.h: In function `__set_64bit_var': /usr/src/linux/include/asm/system.h:189: Warnung: dereferencing type-punned pointer will break strict-aliasing rules /usr/src/linux/include/asm/system.h:189: Warnung: dereferencing type-punned pointer will break strict-aliasing rules in file included from skgepnmi.c:451: h/skgepnm2.h:362:5: missing binary operator before token "(" make: *** [skgepnmi.o] Fehler 1 ######################## Der 2.4.21 Kernel ist entsprechend der Anleitung von Thomas selbst gebaut, lässt sich problemlos booten, jetzt will ich noch die Netzkonfiguration hinbekommen. Die Konfiguration wurde mit make oldconfig; make dep vom 2.4.20 Kernel übernommen. Stelle ich das System entsprechend der Anleitung von Thomas wieder auf Kernel 2.4.20, also den bishere verwendeten um, inclusive Sourcen von 2.4.20, kann ich den Teiber problemlos erstellen. Die Frage: Ist da jetzt ein neuer Treiber für die 3Com-Karte nötig, oder kann es auch an einer falschen Kernelkonfiguariton liegen. Vielen Dank für Hilfe. Mario
Mario Neudeck <mario.neudeck@ziczac-stoffe.de> [2 Nov 2003 20:44:24 +0100]:
/usr/src/linux/include/asm/system.h:189: Warnung: dereferencing type-punned pointer will break strict-aliasing rules
/usr/src/linux/include/asm/system.h:189: Warnung: dereferencing type-punned pointer will break strict-aliasing rules
Den Compileroptionen (Variable CFLAGS im Makefile) die Option -fno-strict-aliasing hinzufügen. Dies machen auch die Makefiles des Kernels, so der Compiler die Option kennt.
in file included from skgepnmi.c:451: h/skgepnm2.h:362:5: missing binary operator before token "(" make: *** [skgepnmi.o] Fehler 1
Dann poste doch bitte mal den Code, der sich in Zeile 362 der angegebenen Datei findet, am besten mit ein paar Zeilen vorher und nachher. Nur dann lässt sich zumindest erahnen, wo der Fehler liegen könnte. Philipp
Sorry, ging nicht früher:
On Mon, Nov 03, 2003 at 06:14:50PM +0100, Philipp Thomas wrote:
in file included from skgepnmi.c:451: h/skgepnm2.h:362:5: missing binary operator before token "(" make: *** [skgepnmi.o] Fehler 1
Dann poste doch bitte mal den Code, der sich in Zeile 362 der angegebenen Datei findet, am besten mit ein paar Zeilen vorher und nachher. Nur dann lässt sich zumindest erahnen, wo der Fehler liegen könnte.
hier der Code von skgepnm2.h /* * Time macros */ #if SK_TICKS_PER_SEC == 100 #define SK_PNMI_HUNDREDS_SEC(t) (t) #else #define SK_PNMI_HUNDREDS_SEC(t) (((t) * 100) / (SK_TICKS_PER_SEC)) #endif Zeile 362 ist: if SK_TICKS_PER_SEC Der Ausdruck tritt, ausser hier, nicht weiter auf. Ich versuchs dann erstmal mit setzen von Dir beschriebenen Compileroptionen. Mario
Mario Neudeck <mario.neudeck@ziczac-stoffe.de> [4 Nov 2003 18:21:05 +0100]:
hier der Code von skgepnm2.h
/* * Time macros */ #if SK_TICKS_PER_SEC == 100 #define SK_PNMI_HUNDREDS_SEC(t) (t) #else #define SK_PNMI_HUNDREDS_SEC(t) (((t) * 100) / (SK_TICKS_PER_SEC)) #endif
Zeile 362 ist: if SK_TICKS_PER_SEC Der Ausdruck tritt, ausser hier, nicht weiter auf.
OK, das scheinen Makros zu sein, da nützt mir Quellcode so nicht viel. Also füge den Compilerschaltern -save-temps hinzu. Wenn make abbricht, müsste da eine Datei mit Namen skgepnmi.i liegen. Schick mir die Datei als PM, dann werde ich mal sehen, ob ich den Schuldigen identifizieren kann. Philipp
participants (2)
-
Mario Neudeck
-
Philipp Thomas