Wie kompiliere ich ein C-Programm, das math.h verwendet?


12

Ich habe Probleme in der Header-Datei math.h und wenn ich die Quadratwurzelfunktion wie in verwende sqrt(d). Aber mein Compiler unterstützt dies nicht. Bitte informieren Sie mich über dieses Problem.

Meine Ubuntu-Version ist 2012.


2
Während wir Programmierfragen lieben - die Frage muss sich auf Ubuntu beziehen - können Sie im Detail klären, worum es hier geht - Beispiele usw.?
fossfreedom

es ist wie sqrt ((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1)) ... mein compiler unterstützt diesen befehl nicht
shreya

1
Bitte antworten Sie, indem Sie Ihre Frage bearbeiten. Geben Sie Codebeispiele an, wie Sie kompilieren, Version von Ubuntu, Version des Compilers. Haben Sie versucht, dies auf einem anderen Compiler / einer anderen Distribution zu tun? Was passiert etc?
fossfreedom

1
@shreya Fragen zu Problemen mit dem von Ihnen geschriebenen Code müssen das spezifische Problem beschreiben und gültigen Code zur Reproduktion in die Frage selbst aufnehmen. Anleitungen finden Sie unter SSCCE.org .
Braiam

3
Ich denke wirklich nicht, dass dies nicht zum Thema gehört. Auf vielen anderen Betriebssystemen wie Windows ist es nicht erforderlich, eine spezielle Linkeroption zu übergeben, um die Mathematikbibliothek in C-Programmen zu verwenden. Sogar auf einigen Unix-ähnlichen Betriebssystemen erfordert die Standard-C-Bibliotheksimplementierung dies nicht. Dies ist ein Problem, mit dem viele Benutzer konfrontiert sind, wenn sie zu GNU / Linux-Systemen wie Ubuntu wechseln. Ich wünschte, die Frage wäre besser geschrieben, um den spezifischen Fehler einzuschließen - wenn wir dieses Thema in Betracht ziehen, sollten wir es vielleicht bearbeiten -, aber dies ist keine allgemeine C-Programmierfrage, sondern eine Frage zur Verwendung gccunter Ubuntu .
Eliah Kagan

Antworten:


21

Fügen Sie -lman das Ende Ihres gccBefehls an.

Bei allen aktuellen Versionen von GCC auf GNU / Linux-Systemen wie Ubuntu müssen Sie explizit darauf verweisen, wenn Sie die Mathematikbibliothek verwenden. Es wird nicht automatisch mit dem Rest der Standard-C-Bibliothek verknüpft.

Wenn Sie auf der Kommandozeile mit dem kompilieren gccoder g++Befehl, würden Sie dies erreichen , indem setzen -lmam Ende des Befehls .

Zum Beispiel: gcc -o foo foo.c -lm


2

Wenn Sie ein C-Programm mit der Bibliothek math.h in LINUX unter Verwendung von GCC oder G ++ kompilieren möchten, müssen Sie nach dem Kompilierungsbefehl die Option –lm verwenden .

gcc xyz.c -o xyz -lm

Hier,

gcc ist der Compilerbefehl (Compilername)
xyz.c ist ein Quelldateiname.
-o ist eine Option zum Angeben der Ausgabedatei.
xyz ist der Name der Ausgabedatei.
-lm ist eine Option, um erneut eine Verknüpfung mit der Mathematikbibliothek ( libm ) herzustellen .

Für weitere Informationen hier ist der Link mit dem vollständigen Artikel.
C-Programm mit math.h unter Linux kompilieren.


Nach dem Verknüpfungsbefehl nicht der Kompilierungsbefehl. (Entschuldigung für das Nitpicking, aber es richtig zu machen hilft, andere Situationen zu verstehen).
Mousomer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.