如何编译使用math.h的C程序?


15

我在math.h标头文件中以及在使用平方根函数时遇到问题sqrt(d)。但是我的编译器不支持此功能。请告诉我这个问题。

我的Ubuntu版本是2012。


2
尽管我们喜欢编程问题-该问题必须与Ubuntu相关-您能否在此处详细说明问题所在-示例等?
fossfreedom

就像sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))...我的编译器不支持此命令
shreya 2013年

1
请通过编辑您的问题来回答。提供代码示例,如何编译,ubuntu版本,编译器版本,是否尝试在其他编译器/发行版上执行此操作。会发生什么?
fossfreedom

1
@shreya有关您编写的代码问题的问题必须在问题本身中描述特定的问题,并包括有效的代码以重现该问题。请参阅SSCCE.org以获取指导。
Braiam

4
我真的不认为这是题外话。在许多其他OS(例如Windows)上,无需传递特殊的链接程序选项即可在C程序中使用数学库。即使在某些类似Unix的操作系统上,标准C库实现也不需要这样做。这是许多用户切换到GNU / Linux系统(如Ubuntu)时面临的问题。我希望这个问题写得更好,以包含特定的错误-如果我们最终考虑了这个主题,那么也许我们应该对其进行编辑-但这不是一个通用的C编程问题,而是一个有关如何gcc在Ubuntu 上使用的问题。
伊莱亚·卡根

Answers:


25

追加-lmgcc命令末尾。

对于GNU / Linux系统(如Ubuntu)上所有最新版本的GCC,使用数学库时,必须显式链接到它。它不会与其他标准C库一起自动链接到。

如果您使用gccor g++命令在命令行上进行编译,则可以通过在命令末尾放置-lm来完成此操作。

例如: gcc -o foo foo.c -lm


5

如果要使用GCC或G ++在LINUX中使用math.h库编译C程序,则必须在compile命令后使用–lm选项。

gcc xyz.c -o xyz -lm

这里,

gcc是编译器命令(编译器名称)
xyz.c是源文件名。
-o是用于指定输出文件的选项。
xyz是输出文件的名称。
-lm是再次链接数学库(libm)的选项。

有关更多详细信息,这里是包含完整文章的链接。
在Linux中使用math.h编译C程序。


在链接命令之后,不是编译命令。(对于挑剔,我们深表歉意,但是正确处理有助于理解其他情况)。
mousomer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.