Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C] funzioni lib math.h

    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?

  2. #2
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    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

  3. #3
    io non ne vedo ma per sicurezza ti posto il programmino

    #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);
    }
    temo sia che non ho la libreria. Ma puo' essere? come faccio a saperlo o a installarla? Ho slackware 9.1

  4. #4
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    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

  5. #5

    Re: [C] funzioni lib math.h

    Originariamente 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?
    devi linkare la libreria math

    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

  6. #6
    <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

  7. #7
    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...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    110
    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

  9. #9
    supponendo che il programma da compilare sia
    prova.c

    digita, per compilarlo
    codice:
    gcc -c prova.c
    per creare l'eseguibile, fase di linking
    codice:
    gcc -o prova prova.o -lm
    per compilare e creare direttamente l'eseguibile
    codice:
    gcc -o prova prova.c -lm

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.