PDA

View Full Version : errore di compilazione, parola ai programmatori


macubo
05-09-2006, 00:52
ciao a tutti, sto compilando i driver kyro sotto damn small linux, ma ho incontrato il primo vero problema:

dando il make install si arriva a un certo punto a:

cc -O2 -DMODULE -DMODVERSIONS -include /usr/src/linux-2.4.26/include/linux/modversions.h -D__KERNEL__ -I/usr/src/linux-2.4.26/include -DLINUX -DGCC_IA32 -DSUPPORT_AGP -Idrm -DHAVE_VMA=0 -c -o module_drm.o module_drm.c
In file included from module_drm.c:36:
drm/drmP.h:265: error: redefinition of `__cmpxchg'
/usr/src/linux-2.4.26/include/asm/system.h:245: error: `__cmpxchg' previously defined here
make: *** [module_drm.o] Error 1

da cosa dipende questo?
ps: il driver che sto compilando richiede il kernel 2.4.x e ci siamo
dice che supporta gcc 3.x e ci siamo (gcc-3.3)

come lo risolvo?? grazie a tutti

macubo
05-09-2006, 01:07
dando uno sguardo al file incriminato drm/drmP.h noto, a ridosso della definizione del __cmpxchg che c'è una direttiva del compilatore (so solo che è una direttiva, non cosa fa):
#ifndef --HAVE_ARCH_CMPXCHG
e che sopra c'è scritto, commentato:
generic cmpxchg added in 2.3.x
e subito sotto:
include this here so that driver can be used with older kernels


io immagino che la cosa sia importante (ma non mi spiego se qualcuno mai che in passato abbia compilato il driver dai sorgenti abbia dovuto hackare il codice..), però nn ne capisco molto di programmazione..

cmq vorrei provare a togliere questo blocco:
#define cmpxchg(ptr,o,n) \
({ \
__typeof__(*(ptr)) _o_ = (o); \
__typeof__(*(ptr)) _n_ = (n); \
(__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \
(unsigned long)_n_, sizeof(*(ptr))); \
})
e vedere cosa succede. Togliendo la direttiva nel file dovrei mantenere quella del kernel giusto? a questo punto gcc nn si troverebbe più in confusione :), ma lo farò domani..

suggerimenti? ciao!

macubo
09-09-2006, 16:55
a causa dei problemi di installazione su hd della damn-small l'ho abbandonata in favore di una sarge con kernel 2.4.27, ricompilata con supporto ai MTRR.

Il driver è compilato (per la prima volta in 6 anni), ora devo installare xfree e fluxbox.
ciao