View Full Version : [C] Problema con la funzione pow
rivoluzionario
24-10-2012, 15:18
Sono su linux, ubuntu 12.10, e come compilatore uso gcc.
Questo è il semplicissimo codice:
#include <stdio.h>
#include <math.h>
main() {
double ciao = 2.;
double c;
c = pow(ciao, 4.);
}
Lo compilo e mi da errore. Mi dice "riferimento non definito a 'pow'". Se compilo scrivendo pow(2., 4.); va tutto bene, se metto la variabile mi da errore.
Qual è il problema?
Grazie
Stai linkando la libreria math? (gcc tuocodice.c -lm)
Per quanto riguarda la differenza di comportamento, potrebbe essere opera di una delle ottimizzazioni di gcc. In alcuni casi la chiamata a pow viene eliminata.
rivoluzionario
24-10-2012, 16:16
Sì, ho scritto "gcc -lm -o miocodice.o miocodice.c"
Il problema è che stavo scrivendo un programma piu grosso dove uso sempre pow(variabile1, variabile2) e mi da errore. Non so come risolverlo.
Guarda qua :D
gibbo@ubuntu64:~$ gcc -lm pow.c
/tmp/ccv6cBHe.o: In function `main':
pow.c:(.text+0x36): undefined reference to `pow'
collect2: ld returned 1 exit status
gibbo@ubuntu64:~$ gcc pow.c -lm
gibbo@ubuntu64:~$
It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, `foo.o -lz bar.o' searches library `z' after file foo.o but before bar.o. If bar.o refers to functions in `z', those functions may not be loaded.
Click! (http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html)
rivoluzionario
24-10-2012, 16:33
Ok, grazie mille :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.