(Linux/Unix) Was mache ich Falsch??



  • 😕 wer macht mich da nach 😡 😡 😡

    quizmaster != quizzmaster 🙂



  • C für PC's



  • guckt euch das mal bitte an:

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
      puts("Folgende Option knnen ausgewhlt werden:\n a fur Addition \n s fur Subtraktion \n m Multiplikation \n d Division \n");
      puts("l fur Logarhitmus \n");
      char ch=getchar();
      fputs("zahl1: ",stdout);
      float a;
      scanf("%f",&a);
      fputs("zahl2: ",stdout);
      float b;
      scanf("%f",&b);
    
      switch(ch)
      {
      case 'a': printf("%f+%f=%f\n",a,b,a+b); return 0;
      case 's': printf("%f-%f=%f\n",a,b,a-b); return 0;
      case 'm': printf("%f*%f=%f\n",a,b,a*b); return 0;
      case 'd': printf("%f/%f=%f\n",a,b,a/b); return 0;
      case 'l': printf("log %f %f=%f\n",a,b,log10(a)); return 0;
      }
      fprintf(stderr,"falsche Eingabe!\n");
      return 1;
    }
    

    Beim Kompilieren tauchen keine Fehler auf aber beim ertsellen:
    /root/mathe2/mathe2/main.c:23: undefined reference to `log10'

    was habe ich schon wieder Falsch gemacht. 😞

    [ Dieser Beitrag wurde am 13.03.2003 um 21:19 Uhr von himes editiert. ]
    [/cpp]

    [ Dieser Beitrag wurde am 13.03.2003 um 21:21 Uhr von himes editiert. ]



  • du hast vergessen die Math Library mitzulinken, gib mal -lm beim kompilieren an

    (und benutz mal endlich Code-Tags)

    [ Dieser Beitrag wurde am 13.03.2003 um 21:13 Uhr von kingruedi editiert. ]



  • Opps tut mir leid, ich habe nicht richtig gelesen.
    Aber wenn ich:

    gcc main.c -lm  (ich habe nur main.c)
    passiert nichts.
    

    [ Dieser Beitrag wurde am 13.03.2003 um 21:42 Uhr von himes editiert. ]



  • Warum postest du die math.h? du mußt das programm in etwa so kompilieren

    gcc meinprogramm.c -lm



  • gcc main.c -lm

    da passiert nichts.
    in der Konsole funktioniert sogar
    gcc main.c
    nicht. Ich kompiliere mit kdevelop und erstelle sie auch mit kdevelop.



  • Dann muss das irgendwo in den Linkereinstellungen mit angegeben werden. Ist dann aber kein C Problem mehr 🙂



  • Wenn ich mal sagen darf, er hat die math.h nicht gepostet und dass was er geschrieben hat gcc main.c -lm ist doch korrekt.

    Und er benutzt code tags 🙄

    Übrigens, bei mir funzt der code nich ganz (BCB 5)

    Hier der geänderte:

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
      float a;
      float b;
      char ch;
      puts("Folgende Option knnen ausgewhlt werden:\n a fur Addition \n s fur Subtraktion \n m Multiplikation \n d Division \n");
      puts("l fur Logarhitmus \n");
      ch=getchar();
      fputs("zahl1: ",stdout);
      scanf("%f",&a);
      fputs("zahl2: ",stdout);
      scanf("%f",&b);
    
      switch(ch)
      {
      case 'a': printf("%f+%f=%f\n",a,b,a+b); getchar(); return 0;
      case 's': printf("%f-%f=%f\n",a,b,a-b); getchar(); return 0;
      case 'm': printf("%f*%f=%f\n",a,b,a*b); getchar(); return 0;
      case 'd': printf("%f/%f=%f\n",a,b,a/b); getchar(); return 0;
      case 'l': printf("log %f %f=%f\n",a,b,log10(a)); getchar(); return 0;
      }
      fprintf(stderr,"falsche Eingabe!\n");
      return 1;
    }
    

    Ich hab auch mal mim Debuger drüber geschaut und nix gefunden (keine Fehler)



  • Original erstellt von quizzmaster:
    **Wenn ich mal sagen darf, er hat die math.h nicht gepostet und dass was er geschrieben hat gcc main.c -lm ist doch korrekt.
    **

    Er hat es inzwischen wegeditiert.



  • @quizzmaster
    ich habe deine Version ausprobiert, funktioniert aber wieder nicht:

    [cpp]

    gmake all-recursive
    gmake[1]: Wechsel in das Verzeichnis Verzeichnis »/root/mathe2«
    Making all in mathe2
    gmake[2]: Wechsel in das Verzeichnis Verzeichnis »/root/mathe2/mathe2«
    /bin/sh ../libtool --mode=link gcc -O2 -O0 -g3 -Wall -o mathe2 main.o
    gcc -O2 -O0 -g3 -Wall -o mathe2 main.o
    gmake[2]: Verlassen des Verzeichnisses Verzeichnis »/root/mathe2/mathe2«
    main.o: In function main': **/root/mathe2/mathe2/main.c:24: undefined reference tolog10'**
    collect2: ld returned 1 exit status
    gmake[1]: Verlassen des Verzeichnisses Verzeichnis »/root/mathe2«
    gmake[2]: *** [mathe2] Fehler 1
    gmake[1]: *** [all-recursive] Fehler 1
    gmake: *** [all-recursive-am] Fehler 2
    *** fehlgeschlagen *** [/cpp]

    [ Dieser Beitrag wurde am 14.03.2003 um 21:49 Uhr von himes editiert. ]

    [ Dieser Beitrag wurde am 14.03.2003 um 21:51 Uhr von himes editiert. ]



  • Bei mir gabs keine probleme!
    alles hat funktioniert.
    Vielleicht steht es nur in der math.h nicht drinne die du hast



  • ich verschiebs nach Linux.

    Das Problem ist: eine Bibliothek wird nicht mitgelinkt (math)


Anmelden zum Antworten