(.text+0x88): undefined reference to `pow'



  • Moin Moin,

    Hmmm. die function

    pow()
    

    ist meines wissens in der math.h eingebunden. daher frag ist mich, grade, warum er diese fkt nicht laden kann/will.

    ich vermude mal 2 sachen.

    a) ist diese nicht in der math.h oder
    b) ich hab die an der falschen stelle eingebunden...

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <math.h>
    #include "Wandela.h"
    

    der aufruf von pow findet nur in dieser Befehlszeile statt.

    if (cobin = (char)1) temp=temp+pow(BIN, b); else temp=temp+0;
    

    **

    Hier auch die vollständige ftk.

    char *btc(char *cobin)
    {
    	char *_cobin = malloc(sizeof(char) * (100 + 1));  // Speicher von 100 + 1 resavieren.  
    	_cobin[0] = 0;
    	int b = 8;
    	int a=0;
    	int temp = 0;
    	printf("ich bin 'cobin' und trage %s mit mir \n", cobin);
    	for (a=0; a<8; ++a)
    		{
    		--b;
    		if (cobin[b] = (char)1) temp=temp+pow(BIN, b); else temp=temp+0;
    		printf("Temp = %i  ", temp);
    		}
    	char *_btc = malloc(sizeof(char) * (10 + 1));
    	_btc[0] = 0;
    	_btc[0] = (char)(temp-48);
    	printf("%s\n", _btc);
    	strcpy(_cobin, _btc);
    	free(_btc);
    	return(_cobin);
    }
    

    ich weiß, das pow länger braucht als BIN*BIN*BIN... aber wollte ich auf eine switch schleife verzichten, damit das teil net zu lang wird.

    falls jemand da eine idee hätte, wie ich das via [b]C** lösten könnte. immer zu.



  • Du musst schon die Fließkomma-Library mit einbinden.

    Da ich dein System nicht kenne, kann ich leider nicht sagen wie und wo die liegt oder heißt oder eingebunden wird.



  • DirkB schrieb:

    Du musst schon die Fließkomma-Library mit einbinden.

    Da ich dein System nicht kenne, kann ich leider nicht sagen wie und wo die liegt oder heißt oder eingebunden wird.

    Fließkomma-library?

    muß ich mal sehen, wo die bei mir liegt.

    und was system angeht. ich verwende Ubuntu 10.04.



  • Das ist gcc-spezifisch: Du musst den Mathematik-Anteil der Standardbibliothek explizit linken, indem du die Linkeroption -lm angibst.



  • Bashar schrieb:

    Das ist gcc-spezifisch: Du musst den Mathematik-Anteil der Standardbibliothek explizit linken, indem du die Linkeroption -lm angibst.

    ergo die makefile entsprechend ändern?

    CC	=	gcc
    PROG	=	inout
    
    all:
    	$(CC) -c $(PROG).c
    	$(CC) -lm -o $(PROG) $(PROG).o
    
    clean:
    	rm -f $(PROG) $(PROG).o *~
    

    oder den befehl manuell eintragen. 😞



  • maik81ftl schrieb:

    ergo die makefile entsprechend ändern?

    $(CC) -lm -o $(PROG) $(PROG).o
    

    Das sieht schonmal gut aus.



  • Bashar schrieb:

    maik81ftl schrieb:

    ergo die makefile entsprechend ändern?

    $(CC) -lm -o $(PROG) $(PROG).o
    

    Das sieht schonmal gut aus.

    Läuft so aber leider nicht 😞 die schaut schon so aus...

    naja! mach i des halt via

    gcc -lm -o Wandela Wandela.c
    

    geht genauso und die meldung is raus...



  • das -lm ans Ende 🙂


Anmelden zum Antworten