Sqrt [C]
Salve ragazzi, ieri facevo un piccolo programma per riprendere un pò la mano con il C, e ho imparato a programmare da terminale dalle piattaforme Linux. Ma c'è un piccolo problema, il programma è il calcolo della norma di un vettore, e quindi necessito della struttura radice quadrata presente nella libreria math.h, ma non mi viene compilato dicendo "Undefined sqrt". Decido di compilarlo da windows con devc++ e parte, l'ho controllato con un pò di vettori e funzionava! Ma gcc per caso non legge la libreria math.h?
Risposte
gcc -lm
"Mrhaha":
ho imparato a programmare da terminale dalle piattaforme Linux.
Bravissimo!

Come già accennato [ma poco chiaramente, forse], è un problema di linking delle librerie: devi dire esplicitamente a gcc che vuoi usare la librerie math.
questo si fa specificando l'opzione -lm nel comando di compilazione
gcc -lm main.c -o norma
o qualcosa di simile.
In generale, ogni volta che aggiungi una libreria che non è core [come stdio o stdlib] devi specificare al compilatore di andare a cercare le librerie.
La sintassi è sempre la stessa: il simbolo -, la lettera l ed il nome della libreria, o l'abbreviazione come nel caso di math.h.
e già che ci siamo, consiglio di aggiungere pure:
dove ti mette in output i vari warning da NON evitare ma da corregger per togliere possibili bug.
-Wall
dove ti mette in output i vari warning da NON evitare ma da corregger per togliere possibili bug.
[xdom="raptorista"]Ho trasformato il lungo Off-Topic in una nuova discussione
ide-vs-vim-tools-e-compilazione-da-terminale-t95076.html[/xdom]
ide-vs-vim-tools-e-compilazione-da-terminale-t95076.html[/xdom]