每当我在我的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/