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
> 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?
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.
>
> quando compili il modulo mi sa che devi passare -lm come parametro a gcc.
> Quelle che mancano infatti sono le definizioni delle funzioni matematiche.
>
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
uhm.. prova a mettere -lm in EXTRA_CFLAGS
>
> 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/ >
> On 11 Lug, 15:19, Dildo Bogumil di Boscopelo <psycho...@libero.it>
> 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...
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
ciao
Lorenzo
grazie mille
Lorenzo