c - 编译包含<math.h>的c代码时需要使用额外的选项

标签 c compiler-errors math.h math.sqrt

每当我在我的C代码中包含math.h时,如果没有-lm选项就无法编译。我收到此错误消息:

d.o: In function `refresh_position':
d.c:(.text+0x4df): undefined reference to `sqrt'
d.c:(.text+0x524): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status

我可以只输入-lm来编译它,但我的老师说,如果代码不起作用,我将从该作业中得到0分。我想知道是由于我的代码还是因为我的计算机或c库而发生此错误。我必须确保它可以在我的教师计算机上正常运行。

最佳答案

有些实现(例如gcc)默认情况下不链接数学库(在大多数* nix实现中称为libm.a),这就是为什么在构建代码时需要包括-lm的原因。

您的老师应该意识到类似的问题,并且只要您的代码正确使用了sqrt和其他数学例程(为输入和输出使用正确的类型),他或她就应该能够构建您的代码,以便跑。

关于c - 编译包含<math.h>的c代码时需要使用额外的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60872128/

相关文章:

android - Android “The specified child already has a parent.” fragment onCreateView()吗?

C - 简单的数学论证不起作用?

c - 打印出c中最长的子串

android - 编译并运行航天飞机应用程序

c - 在 C 中截断用户给出的文本字符串

c++ - 为什么我不能在C++中填充此2D数组?

c++ - 来自 math.h 的函数使用 C++/clr 返回无效结果

在C中计算弧度的正弦

c - 如何捕获传入的数据包?

C# - Ref 类型比较导致指针混淆?