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.
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 .
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 .
Nach dem Verknüpfungsbefehl nicht der Kompilierungsbefehl. (Entschuldigung für das Nitpicking, aber es richtig zu machen hilft, andere Situationen zu verstehen).
gcc
unter Ubuntu .Antworten:
Fügen Sie
-lm
an das Ende Ihresgcc
Befehls 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
gcc
oderg++
Befehl, würden Sie dies erreichen , indem setzen-lm
am Ende des Befehls .Zum Beispiel:
gcc -o foo foo.c -lm
quelle
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 .
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.
quelle