Frage zu gcc Problem: undefined reference to 'sqrt'

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Tcd
Beiträge: 95
Registriert: 24.03.2003 20:35:46
Wohnort: EDDM

Frage zu gcc Problem: undefined reference to 'sqrt'

Beitrag von Tcd » 08.10.2004 21:54:23

Tach die Herren!

Wir beginnen gerade in der Technikerschule C Programmierung. Damit ich mich von der Masse abhebe :D wollte ich natürlich das ganze unter Debian machen. Dabei hab ich ein kleines Problem mit gcc. Beim compilieren des u.s. Quelltext tritt folgende Fehlermeldung auf.

Code: Alles auswählen

undefined reference to 'sqrt'
Unter WIndows (Dev C++) taucht dieses Problem nicht auf.

Code: Alles auswählen

#include <math.h>
#include <stdio.h>

main()
{

const double z = 2.0;

printf("Die Wurzel aus %f = %f\n",z ,sqrt(z));
printf(">");
getchar();
}
Kann da vielleicht einer helfen? Das wär supi!
MfG Tcd...

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 08.10.2004 21:56:30

Die Library (libm) mit den Mathematikfunktionen wird bei GCC nicht automatisch mit eingebunden. Du musst die mit "-lm" mit einlinken

Code: Alles auswählen

gcc Program.c -o program -lm
BTW: Gewöhne dir das einrücken von Code am besten sofort an. Ich hab es früher auch für nicht notwendig gehalten; heute kann ich meine alten Programme kaum mehr lesen

Tcd
Beiträge: 95
Registriert: 24.03.2003 20:35:46
Wohnort: EDDM

Beitrag von Tcd » 08.10.2004 22:05:34

Huch das ging ja fix! 8O :D Vielen Dank!

Welche Form des Einrückens schlägst Du vor?
MfG Tcd...

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 11.10.2004 12:43:28

Tcd hat geschrieben:Welche Form des Einrückens schlägst Du vor?
Hach, da gibt es Standards wie Sand am Meer. Ich bevorzuge den "Kerningham&Richie"-Style. Debian hat das Programm "indent", dass dir deinen Code automatisch einrückt. Einfach

Code: Alles auswählen

indent -kr programm.c
und schon ist es besser eingerückt ;)
mit "info indent" bekommst du viele Infos über die verschiedenen Standards. Meine Faustregeln:
  • Jeder Block wird 4 Zeichen eingerückt, die öffnende Klammer steht in der selben Zeile (außer bei Funktionsdeklarationen), die schließende einzeln.
  • ein else wird in einer Zeile mit den Klammern geschrieben.
  • Hat zwar nichts mit Einrücken zu tun, ist aber auch "quasi-standard": Lokale Variablen werden klein geschrieben, evtl. mit Unterstrich ("eine_lokale_variable"), globale werden am Anfang jeden Wortes groß geschrieben ("EineGlobaleVariable"), präprozessor-Makros/Konstanten sowie typedefs komplett groß ("EINE_KONSTANTE")
Beispiel:

Code: Alles auswählen

void funktion()
{
    Anweisung...;
    if (Bedingung) {
        Tuwas;
    } else {
        Machwasanderes;
    }
}
Editoren wie EMACS, vi und kate, kdevelop rücken dir den Text auch automatisch ein, während du schreibst.

Antworten