为什么我不需要在MinGW中使用标志-lm,但在Linux中我需要明确地使用它?

时间:2018-01-07 04:12:31

标签: c++ c linux windows gcc

如果我需要使用数学库,我需要在Linux中使用GCC时添加-lm。但在Windows上,当我在MinGW-w64中使用GCC时,我没有使用-lm并且效果很好。

我知道有必要链接libm的原因。但我真的不知道为什么我可以在Windows中省略它?

2 个答案:

答案 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解决这个问题。