Newsgroup: it.comp.lang.c
Titolo: Errore in compilazione con gcc

Salve. Sto cercando di compilare questo modulo per kernel linux 2.4.26:
http://laGNUsi.net/pub/mio_dev.c
per compilarlo uso gcc:
$ gcc-3.3.4 -O2 -DMODULE -D__KERNEL__ -isystem
/lib/modules/2.4.26/build/include -W -Wall -Wstrict-prototypes -c -o
mio_dev.o mio_dev.c
ma ottengo questi errori:
In file included from mio_dev.c:17:
/usr/include/sys/types.h:41: error: conflicting types for `fsid_t'
/lib/modules/2.4.26/build/include/asm/statfs.h:8: error: previous
declaration of `fsid_t'
/usr/include/sys/types.h:62: error: conflicting types for `dev_t'
/lib/modules/2.4.26/build/include/linux/types.h:21: error: previous
declaration of `dev_t'
/usr/include/sys/types.h:72: error: conflicting types for `mode_t'
/lib/modules/2.4.26/build/include/linux/types.h:23: error: previous
declaration of `mode_t'
/usr/include/sys/types.h:77: error: conflicting types for `nlink_t'
/lib/modules/2.4.26/build/include/linux/types.h:24: error: previous
declaration of `nlink_t'
In file included from /usr/include/sys/types.h:216,
                 from mio_dev.c:17:
/usr/include/sys/select.h:38: error: conflicting types for `sigset_t'
/lib/modules/2.4.26/build/include/asm/signal.h:21: error: previous
declaration of `sigset_t'
In file included from /usr/include/sys/select.h:44,
                 from /usr/include/sys/types.h:216,
                 from mio_dev.c:17:
/usr/include/time.h:119: error: redefinition of `struct timespec'
In file included from /usr/include/sys/select.h:46,
                 from /usr/include/sys/types.h:216,
                 from mio_dev.c:17:
/usr/include/bits/time.h:68: error: redefinition of `struct timeval'
In file included from /usr/include/sys/types.h:216,
                 from mio_dev.c:17:
/usr/include/sys/select.h:78: error: conflicting types for `fd_set'
/lib/modules/2.4.26/build/include/linux/types.h:20: error: previous
declaration of `fd_set'
In file included from /usr/include/sys/stat.h:105,
                 from mio_dev.c:18:
/usr/include/bits/stat.h:37: error: redefinition of `struct stat'
In file included from /usr/include/fcntl.h:33,
                 from mio_dev.c:20:
/usr/include/bits/fcntl.h:137: error: redefinition of `struct flock'
credo che siano dovuti a delle opzioni mancanti o messe in modo errato
del comando gcc. qualcuno sa aiutarmi?
grazie a tutti :)

il -nostdinc non ha nessun effetto perche' il -isystem si inserisce
dopo gli eventuali -I ma prima del path delle librerie standard di
sistema... il problema persiste :(
p.s. man gcc l'ho letto e riletto, ma non ho concluso niente ...
proprio per questo ho scritto qui :D
grazie


Evidentemente non lo hai letto bene.
-isystem dir
     Search dir for header files, after all directories
     specified by -I but before the standard system direc-
     tories.  Mark it as a system directory, so that it
     gets the same special treatment as is applied to the
     standard system directories.
Anche se usi -isystem continua a cercare nella /usr/include
Studiati bene i Makefile del kernel


     standard system directories.
Cerca in dir DOPO (aver cercato) nelle directory speiciificate da -I e
PRIMA (di averlo fatto) nelle directory standard!!!!

il problema e' stato trovato... una chiamata ad una funzione nello
spazio di memoria utente da parte del modulo! faceva bene il
compilatore a non farmi compilare quella schifezza!!! ciao ciao


Sei duro a capire!  Devi fare in modo che non ricerchi nelle directory 
standard.  RIPETO: studiati i Makefile del kernel se stai codificando un 
driver.



Anche se ti sembra di aver risolto rimane il fatto che ti includi degli 
header che non dovresti.
E una chiamata a funzione NON da` gli errori che hai messo nel primo post.
