如果我需要使用数学库,我需要在Linux中使用GCC时添加-lm
。但在Windows上,当我在MinGW-w64中使用GCC时,我没有使用-lm
并且效果很好。
我知道有必要链接libm
的原因。但我真的不知道为什么我可以在Windows中省略它?
答案 0 :(得分:7)
因为在MinGW下,数学函数实际上并未在libm中定义。 "的libm"是一个用作占位符的空库;数学函数实际上是在MSVCRT.DLL which MinGW uses as its standard library中定义的。
(使用系统的MSVCRT作为标准C库is debatable的有效性。然而,那就是MinGW的作用。)
答案 1 :(得分:1)
In my opinion,这是Unix和Linux C库设置中一个重要的,长期存在的错误,您实际上需要使用-lm
。我要说你应该感谢MinGW解决这个问题。