math.h wird nicht gefunden

Azero

Mitglied
Hallo...

ich arbeite mit Eclipse 3.0 unter Unix. Mit dem CDT-Plugin kann ich dort auch C programmieren. Ich habe versucht mathematische Funktionen zu schreiben aber es scheitert schon bei dem einbinden der Headerdatei. Kann mir jemand sagen wo die liegt oder wie ich den Pfad dahin in Eclipse einstelle?

Danke fürs lesen..

Azero
 
moin


Also 2 Möglichkeiten:
Entweder ist die math.h wirklich nciht vorhanden, oder der Pfad zu ihr ist nciht eingestellt.


Ersteres kann man ja schnell über prüfen.
Zu dem zweiten kann ich dir keine genaue Erklärung geben da ich mich mit dem Programm nciht auskenne, aber dafür bringt fast jedes Programm ein Handbuch mit, oder du suchst selber wo man das einstellen kann.


mfg
umbrasaxum
 
Hallo, bei mir liegt die Datei unter "/usr/include/math.h". Eclipse findet sie dort auch
von selbst und verlinkt diese richtig. Bist du sicher, dass sie auf deinem System vorhanden ist? Such doch mal nach ihr (z.B. mit find / -name math.h).

Ich weiß allerdings nicht, wo du die Suchverzeichnisse, in Eclipse, einstellen kannst. Einen Dialog habe ich dafür nicht gefunden. Was hälst du davon, die gefundene math.h in /usr/include/ zu kopieren bzw. zu verlinken oder direkt den Pfad in der Include-Direktive anzugeben? Dann sollte es unter Eclipse richtig angezeigt werden.
 
Zuletzt bearbeitet:
hab gute und schlechte nachrichten..

die datei liegt bei mir auch unter /usr/include.... Die Schlechte.. Das hilft leider nichts. Habe eine Maske gefunden, die vom nahmen her für ein Projekt externe include annimmt, aber es bleibt alles ohne Wirkung auf die Funktion. Auch simples reinkopieren ins Projektverzeichnis hilf nicht.

Ich muss noch mal ganz dumm fragen. die .h datein sind doch nur beschreibungen der Funktionalitäten. Definitionsdatei also. Aber wie die Funktion sqrt() wirklich funktionniert, steht dort nicht. Wie hängt das denn alles zusammen? Gibt es noch weitere Abhängigkeiten? Wo ist die Funktion sqrt() letztendlich nieder geschrieben?

Danke für die Mühe..

Azero
 
moin


Ja in den .h (Header) stehen nur die Prototypen.

Wenn in der math.h der Prototyp von sqrt steht gibt es irgendwo eine math.c in der die Funktion komplett steht, die math.c includiert dann auch die math.h.
Aber! Meistens gibt es keine .c mehr, sondern werden durch LIBs ersetz, oder durch DLLs.

Kannst du nciht den absoluten Pfad der math.h angeben? Zum testen mein ich.


mfg
umbrasaxum
 
Zuletzt bearbeitet:
Vielleicht solltest du etwas konkreter werden, damit es zu einer Problemlösung kommen kann. Was heißt "er scheitert beim Einbinden der math.h" ? Liefert dir der Compiler irgendwelche Meldungen oder kommt nur die Nachricht, dass der Header nicht auffindbar ist? Wenn dies der Fall ist, lass deinen Compiler auch in anderen Verzeichnissen suchen. Zum Beispiel mit dem gcc müsste du das mit der Option -B /bla/fasel/ machen.

PS:
Unter Unix und ähnlichen gibt es afaik keine DLL's - abgesehen von Mono - dort gibt es nur .so-Datein. Das ist aber in etwa das selbe.
 
Hallo K

--------------------------------------------------------------------------------

Danke für deine Antwort. Du hast recht. Meine Umschreibung war etwas salop formuliert.

>Was heißt "er scheitert beim Einbinden der math.h" ?

Um die sqrt()-Funktion benutzen zu können, ist die math.h-Datei mit include einzubinden. Das tuhe ich zu beginn der Datei auch. Dennnoch bekomme ich beim kompilieren den Fehler.

gcc -o calc calc.c soapC.c soapServer.c ../../gsoap-linux-2.7/stdsoap2.c -B /usr/include/
/tmp/ccYJI6PV.o(.text+0x234): In function `ns__sqrt':
: undefined reference to `sqrt'
collect2: ld returned 1 exit status
make: *** [calc] Error 1


Die Codezeile
-----------------------
result=sqrt(a);

die -B /usr/include/ hat leider nicht geholfen. Wie geschrieben verwende ich Eclipse mit dem CDT-Plugin. Hilft dir das weiter?

Gruß Azero
 
Da ich selbst keinen Rat habe, habe ich Google bemüht. Es gibt knapp 55.000 Ergebnisse, unter anderem das erste Ergebnis dieses Querys rät mit der libmath zu linken, Beispiel: cc -o foo foo.c -lm funktioniert das?
 
hi..

den link hab ich nicht gefunden. gcc ...... -lm funktioniert. :)

Ich danke für den Hinweis..

Grüße Azero
 
Zurück