Newsgroup: it.comp.os.linux.development
Titolo: Errore compilazione/caricamento modulo

Salve a tutti,
sto mettendo mano a un modulo che ha realizzato un'altra persona...
che però non si ricorda come aveva risolto...
Ha realizzato questo modulo, ma se provo a caricarlo (insmod
modulo.ko) mi dice:
insmod: error inserting 'modulo.ko': -1 Unknown symbol in module
A quanto pare, il problema appare in compilazione, quando appaiono
questi warning:
WARNING: "floorf" [/home/rtaiscara/Scrivania/scara/modulo/modulo.ko]
undefined!
WARNING: "fabsf" [/home/rtaiscara/Scrivania/scara/modulo/modulo.ko]
undefined!
Qualcuno sa come posso risolvere?
Sto usando Ubuntu 8.04, con kernel 2.6.23 e la RTAI 3.6 per il
realtime. Sto usando proprio questa versione del kernel perchè il
modulo è stato realizzato usando questa versione... quindi non volevo
cambiare nulla...
ciao
Lorenzo

 Qualcuno sa come posso risolvere?
quando compili il modulo mi sa che devi passare -lm come parametro a gcc. 
Quelle che mancano infatti sono le definizioni delle funzioni matematiche.
-- 
SF
Games are very educational. Scrabble teaches us vocabulary, Monopoly teaches 
us cash-flow management, and Dungeons & Dragons teaches us to loot dead bodies.


Ciao e grazie della risposta!
Penso sia intuibile che io non è che sia molto esperto di queste
cose... quindi spero mi riuscirai/riuscirete ad aiutare...
Per compilare il modulo, la persona che l'ha creato ha creato anche un
Makefile; quindi, io faccio semplicemente "make",e in teoria il modulo
si compila, giusto?
Intuisco che probabilmente dovrò modificare il makefile... ma come?
Attualmente il makefile è questo:
##############
obj-m	+= modulo.o
KDIR	:= /lib/modules/$(shell uname -r)/build
PWD	:= $(shell pwd)
EXTRA_CFLAGS := -I/usr/realtime/include -I/usr/include/ -ffast-math -
mhard-float -O3 -s -fomit-frame-pointer
all:
	make -C $(KDIR) M=$(PWD) modules
clean:
	make -C $(KDIR) M=$(PWD) clean
#################
Che modifiche devo fare?
grazie
Lorenzo

L wrote:

uhm.. prova a mettere -lm in EXTRA_CFLAGS



così?
EXTRA_CFLAGS := -I/usr/realtime/include -I/usr/include/ -ffast-math -
mhard-float -O3 -s -fomit-frame-pointer -lm
non cambia niente, purtroppo...
ciao
Lorenzo


I moduli del kernel non possono linkare librerie esterne.  Sembra che 
il kernel originale avesse una configurazione diversa (forse includeva 
l'emulazione del coprocessore matematico).
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 non cambia niente, purtroppo...
ha ragione Giovanni, io ho scritto una bella ca**ata.
Devi ricompilare il kernel in modo che quelle due funzioni vengano definite 
(attraverso opportuna modifiche su config.h), oppure implementarle tu.



Vi ringrazio tantissimo per l'interessamento...
Vi chiedo una cortesia: riuscireste a spiegarmi passo-passo come devo
fare? (in realtà la prossima settimana sono via e non posso provare,
quindi non c'è fretta, non è necessaria una risposta immediata)
grazie mille
Lorenzo

Dimenticavo di dire "come sono arrivato a questo punto".
Ho installato ubuntu hardy. Poi ho seguito questa guida
https://www.rtai.org/RTAILAB/RTAI-UbuntuGutsy-Matlab.txt
per installare RTAI. Come dicevo, mi serviva di usare il kernel
2.6.23, e RTAI 3.6.
ciao
Lorenzo

Rinnovo la richiesta...
grazie mille
Lorenzo
