PDA

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

GByTe87
24-10-2012, 16:10
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.

GByTe87
24-10-2012, 16:27
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 :)