[C] Problemi libreria <math.h>
Salve,
vorrei un parere su di un problema che mi è capitato nell'ultimo mese.
Compilando con gcc (in Linux) del codice con inclusa la libreria dello standard C: math.h
mi ritorna un errore di "undefined reference" cosa mai successa prima.
Es di codici idioti
questo compila:
questo non compila:
messaggio di ritorno:
Le varianti dell'ambiente di compilazione, rispetto ad un periodo antecedente al problema sono:
- passaggio da Xubuntu 11.04 a 11.10
- da kernel 2.bla.bla a 3.0.0-13-generic
- utilizzo delle Glib del C libglib2.0-0 versione 2.31.3 invece delle standard di ubuntu 2.30.0 (per via di un mio errore nei repository fatto all'installazione, se cambio dovrei reinstallare tutto cosa che non ho tempo di fare)
Il codice ovviamente si può compilare passando per altre vie, tipo per g++. La cosa che vorrei capire è il perchè non compila più con gcc.
Lo standard C è quello non possono cambiare le funzioni o gli include, anche perchè controllando math.h non trovo una che sia una funzione matematica, che è successo?
Se avete idee, ringrazio
vorrei un parere su di un problema che mi è capitato nell'ultimo mese.
Compilando con gcc (in Linux) del codice con inclusa la libreria dello standard C: math.h
mi ritorna un errore di "undefined reference" cosa mai successa prima.
Es di codici idioti
questo compila:
#include <math.h> int main(){ pow(2.0,3.0); return 0; }
questo non compila:
#include <math.h> int main(){ double a,c; int i=0; while(i<100){ a= pow(2.0,(double)i); c=a; a=c; i++; } return 0; }
messaggio di ritorno:
/tmp/ccgnV7BL.o: In function `main': cc.c:(.text+0x27): undefined reference to `pow' collect2: ld returned 1 exit status
Le varianti dell'ambiente di compilazione, rispetto ad un periodo antecedente al problema sono:
- passaggio da Xubuntu 11.04 a 11.10
- da kernel 2.bla.bla a 3.0.0-13-generic
- utilizzo delle Glib del C libglib2.0-0 versione 2.31.3 invece delle standard di ubuntu 2.30.0 (per via di un mio errore nei repository fatto all'installazione, se cambio dovrei reinstallare tutto cosa che non ho tempo di fare)
Il codice ovviamente si può compilare passando per altre vie, tipo per g++. La cosa che vorrei capire è il perchè non compila più con gcc.
Lo standard C è quello non possono cambiare le funzioni o gli include, anche perchè controllando math.h non trovo una che sia una funzione matematica, che è successo?
Se avete idee, ringrazio

Risposte
Hai inserito l'opzione di compilazione -lmath o -lm (non ricordo quale delle due vada usata o se vanno bene entrambe - è da un po' che non programmo in linux)?
"apatriarca":
Hai inserito l'opzione di compilazione -lmath o -lm (non ricordo quale delle due vada usata o se vanno bene entrambe - è da un po' che non programmo in linux)?
bhe certo

-lm io ho sempre visto...
bhe.. è strano.. hai provato a dare un occhiata al contenuto di math.h?
Potrebbe essere un problema dell'ottimizzatore, prova a aggiungere l'opzione di debug e controlla se il codice #2 poi funziona.