Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我不';在MinGW中不需要-lm标志,但在Linux中我需要显式地使用它吗?_C++_C_Linux_Windows_Gcc - Fatal编程技术网

C++ 为什么我不';在MinGW中不需要-lm标志,但在Linux中我需要显式地使用它吗?

C++ 为什么我不';在MinGW中不需要-lm标志,但在Linux中我需要显式地使用它吗?,c++,c,linux,windows,gcc,C++,C,Linux,Windows,Gcc,如果我需要使用数学库,我需要在Linux中使用GCC时添加-lm。但是在Windows上,当我在MinGW-w64中使用GCC时,我没有使用-lm,而且它工作得很好 我知道为什么需要链接libm。但我真的不知道为什么我可以在Windows中省略它?因为在MinGW下,数学函数实际上没有在libm中定义。“libm”是用作占位符的空库;数学函数实际上是在MSVCRT.DLL中定义的 (将系统的MSVCRT用作标准C库的有效性。然而,这是MinGW所做的。)因为在MinGW下,数学函数实际上没有在l

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


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

因为在MinGW下,数学函数实际上没有在libm中定义。“libm”是用作占位符的空库;数学函数实际上是在MSVCRT.DLL中定义的


(将系统的MSVCRT用作标准C库的有效性。然而,这是MinGW所做的。)

因为在MinGW下,数学函数实际上没有在libm中定义。“libm”是用作占位符的空库;数学函数实际上是在MSVCRT.DLL中定义的


(将系统的MSVCRT用作标准C库的有效性。然而,MinGW就是这么做的。)

,在Unix和Linux C库设置中,这是一个长期存在的严重错误,您实际上需要使用
-lm
。我想说,您应该感谢MinGW修复了这个问题。

,这是Unix和Linux C库设置中一个长期存在的重大错误,您实际上需要使用
-lm
。我想说你应该感谢MinGW解决了这个问题。

这只是配置上的差异。默认情况下,带有Mingw的gcc驱动程序配置为在数学库中链接,而linux中的gcc则不是。有关详细信息,请参见我的答案。FWIW,您也不需要在Mac上指定
-lm
。如果您这样做,不会造成任何伤害,但是如果您不这样做,也不会造成任何伤害。mingw-w64开发人员修复了该错误。这只是配置上的差异。默认情况下,带有Mingw的gcc驱动程序配置为在数学库中链接,而linux中的gcc则不是。有关详细信息,请参见我的答案。FWIW,您也不需要在Mac上指定
-lm
。如果您这样做,不会造成任何伤害,但是如果您不这样做,也不会造成任何伤害。mingw-w64开发人员修复了该错误有没有办法在
MinGW64
上使用
libm
优化数学?有没有办法在
MinGW64
上使用
libm
优化数学?