Newsgroup: it.comp.lang.c
Titolo: [newbie] problema in compilazione

dovrei utilizzare la libreria math.h (nella diretory di
default /usr/include) ma al momento della compilazione ricevo una sfilza di
errori tipo questo:
/home/corrado/tmp/cc0IJLM2.o(.text+0x937): In function `main':
: undefined reference to `fmod'
qualcuno mi sa illuminare?
(ps: la libreria math.h esiste e si trova in /usr/include come detto sopra)


Assumendo che tu stia usando un gcc: aggiungi il flag -lm in compilazione.
C'e' nelle FAQ questo? -_-
-- 
Mat/tia Belletti - Graduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003

 C'e' nelle FAQ questo? -_-
se per FAQ intendi queste
http://net.supereva.it/sourcenet.freeweb/faq_c.htm?p
la risposta è no.
Per evitare di porre altri quesiti banali, sapresti indicarmi altre FAQ in
merito, magari più complete.
Ciao e grazie

TNT ha scritto:

Visto che il problema pratico è risolto, un paio di pignolerie:
1) Quello che avevi non era un problema di compilazione ma di link.
Infatti, il modulo era stato correttamente compilato producendo il file
oggetto "/home/corrado/tmp/cc0IJLM2.o".
2) Il file "math.h", come tutti gli altri file terminanti in ".h", non è
una libreria ma solo l'include file (o header file) della libreria. I file
".h" contengono solo una descrizione (dichiarazione) delle funzioni di
libreria, che servono al compilatore per poter produrre il file oggetto.
Al linker servono le librerie vere e proprie, che sono generalmente file
binari (in cui nome termina in ".lib", ".a" o altro) contenenti i vari
file oggetto della libreria.
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Ciao e grazie
Cerca qualche thread piu' in su nel gruppo, stiamo (stanno, dato che io 
non ho ancora contribuito :P) facendo una revisione delle FAQ. Cmq non 
era una critica rivolta a te :)


 era una critica rivolta a te :)
E io ho detto una cazzata, dato che credevo di essere un i.c.l.c++ :-)


 oggetto "/home/corrado/tmp/cc0IJLM2.o".
Continua a darmi questo problema di link anche quando annetto al programma
altre librerie (nello specifico <openssl/bn.h>).
/home/corrado/tmp/cc0PNNGj.o(.text+0x58): In function `main':
: undefined reference to `BN_init'
Nel caso di prima compilavo con l'opzione -lm (che, tra l'altro non so cosa
indichi e mi piacerebbe saperlo, ma mi sono perso tra le pagine del man),
ma ora questo "espediente" non funziona.
Mi puoi indicare una via d'uscita?
grazie

 Mi puoi indicare una via d'uscita?
Devi scoprire come si chiama e dove si trova la libreria che t'interessa.
Se sei su Linux con gcc, dovrebbe trattarsi di un file il cui nome inizia
per "lib" e termina per ".a" e che contiene almeno una volta la stringa
"BN_init" (il nome del simbolo richiesto). Probabile che si trovi in
"/usr/lib" o in qualche sua sottodirectory. Una volta che l'hai scoperto,
usa i comandi "-l" (e forse anche "-L") come detto sopra.
Comunque, qui ormai sei un po' OT: non si tratta di linguaggio C ma di
funzionamento del tuo ambiente di sviluppo. Potresti vedere se nella
gerarchia it.comp.* c'č un newsgroup che si occupa di programmazione nel
sistema operativo che usi.
