quando uso una funzione della libreria math.h, per esempio sin(x) ricevo questo errrore (la sintassi e' corretta):
/tmp/ccRhbaik.o(.text+0x13a): In function `main':
: undefined reference to `sin'
collect2: ld returned 1 exit statu
Cosa devo fare?
quando uso una funzione della libreria math.h, per esempio sin(x) ricevo questo errrore (la sintassi e' corretta):
/tmp/ccRhbaik.o(.text+0x13a): In function `main':
: undefined reference to `sin'
collect2: ld returned 1 exit statu
Cosa devo fare?
generalmente undefined reference viene dato quando si usa una funzione sconosciuta... hai scritto tutto corretto? (magari c'è scappata una maiuscola da qualche parte - nn darebbe errori di sintassi nel caso)
Live fast. Troll hard.
Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
Team Lead @Gameloft Barcelona
io non ne vedo ma per sicurezza ti posto il programmino
temo sia che non ho la libreria. Ma puo' essere? come faccio a saperlo o a installarla? Ho slackware 9.1#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
FILE *fp;
int i,k,nx,ny;
double x0,y0,a,dx,dy,x1,y1;
// richiede le condizioni iniziali e i parametri
printf("immettere x0 e y0 ");
scanf("%le%le",&x0,&y0);
printf("immettere il valore del parametro a ");
scanf("%le",&a);
printf("immettere il passo per avanzamento ");
scanf("%le",&dy);
printf("immettere il numero di passi in x ");
scanf("%d",&nx);
printf("immettere il numero di passi in y ");
scanf("%d",&ny);
printf("immettere il dx ");
scanf("%le",&dx);
x1=0.;
y1=0.;
for(k=1;k<nx;k++){
for(i=1;i<ny;i++){
// calcola trasformazione
x1=x0+a*sin(y0);
y1=y0+x1;
//modulo
// stampa
if((fp=fopen("punti.txt","a"))==NULL){
perror("Errore apertura del file");
exit(1);
}
fprintf(fp,"%le %le",x1,y1);
// scala
x0=x1;
y0=y1;
}
// sposta condizioni iniziali di dx
x0=x0+dx;
}
fclose(fp);
}
temp.exe built successfully...
Può essere, pero strano che nn ci sia la math.h![]()
Live fast. Troll hard.
Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
Team Lead @Gameloft Barcelona
devi linkare la libreria mathOriginariamente inviato da yagorossi
quando uso una funzione della libreria math.h, per esempio sin(x) ricevo questo errrore (la sintassi e' corretta):
/tmp/ccRhbaik.o(.text+0x13a): In function `main':
: undefined reference to `sin'
collect2: ld returned 1 exit statu
Cosa devo fare?
aggiungi -lm
esempio
gcc -o pippo pippo.c -lm
[aggiungo]
quando vedi tra gli errori "ld" significa che la compilazione è andata a buon fine, mentre ci sono stati problemi in fase di linking
<math.h> appartiene allo standard ansi per il C...
strano che non sia presente nel compilatore gcc di Linux (affine allo standard per eccellenza)
prova a controllare se <math.h> è presente nella directory "include" del compilatore.
...Terrible warlords, good warlords, and an english song
non è un problema di compilazione, ma di linking, cioè il linker ld
non linka per default la libreria libm
occorre usare l'opzione -lm
il perchè non sia collegata per default mi sfugge...
non ho capito....ho lo stesso problema di yagorossi....ho controllato se la lib esiste nel /usr/include/ ed esiste......cosa devo fare?(sono newbie si di C ke di LINUX)
Grazie
supponendo che il programma da compilare sia
prova.c
digita, per compilarlo
per creare l'eseguibile, fase di linkingcodice:gcc -c prova.c
per compilare e creare direttamente l'eseguibilecodice:gcc -o prova prova.o -lm
codice:gcc -o prova prova.c -lm