2010-08-24 17 views
5

Come utilizzare la funzione pow() e sqrt() in Ubuntu? Ho incluso il file di intestazione math.h ma mi dà ancora un errore.Come posso usare pow() & sqrt() su UNIX?

+2

Qual è l'errore che stai ottenendo? –

+0

L'uso di 'pow' è spesso un errore. Se queste sono le uniche due funzioni matematiche che stai usando (per le quali hai bisogno di '-lm'), potresti voler controllare se vuoi davvero' pow'. Se l'esponente è sempre un numero intero e/o se la base è 2, ci sono molti modi migliori (entrambi più veloci e garantiti, a differenza di 'pow') per farlo. –

risposta

7

Collegamento a libm.so, aggiunta di -lm ai parametri della riga di comando del compilatore.

+0

ok, quindi cosa dicono i tuoi .. che dovrei aggiungere -lm dopo cc nel mio comando del compilatore, vero? – Pavitar

+0

Sì, esattamente. (Filler). –

+1

Metti il ​​'-lm' alla fine della riga, dopo tutti i file .o e altre librerie. In generale, metti '-lsomething' dopo tutti i file .o, in modo che leggendo la riga da sinistra a destra, il linker possa trovare tutte le funzioni che dovrebbe includere senza rivedere la linea. Sì, alcuni ambienti supportano il mettere le cose in qualsiasi ordine, ma questa regola empirica ti farà risparmiare molto quando ti trasferirai su piattaforme che non lo fanno. Nota che molti toolchain su Windows preferiscono questo ordine, per esempio. – RBerteig

9

Prova ad aggiungere -lm al comando del tuo linker. La maggior parte delle funzioni matematiche è attiva in libm che deve essere esplicitamente collegato.

Problemi correlati