c ++ - Hvorfor jeg ikke har brug for flagmet -lm i MinGW, men i Linux har jeg brug for det eksplicit?

Indlæg af Hanne Mølgaard Plasc

Problem



Hvis jeg skal bruge matematikbiblioteket, skal jeg tilføje -lm, når jeg bruger GCC i Linux. Men i Windows, da jeg bruger GCC i MinGW-w64, brugte jeg ikke -lm]] og det fungerer godt.


Jeg ved grunden til, at det er nødvendigt at forbinde libm. Men jeg ved ikke rigtig, hvorfor jeg kan udelade det i Windows?

Bedste reference


Fordi, under MinGW, er matematiske funktioner ikke defineret i libm. 'Libm' er et tomt bibliotek, der bruges som pladsholder; matematiske funktioner er faktisk defineret i MSVCRT.DLL, som MinGW bruger som standardbibliotek.]]


(Gyldigheden af ​​at bruge systemets MSVCRT som standard C-bibliotek er diskutabelt. Ikke desto mindre, det er det MinGW gør.) [6]

Andre referencer 1


Efter min mening er det en betydelig, langvarig fejl i Unix og Linux C-biblioteket, som du faktisk skal bruge -lm. Jeg siger, du skal takke MinGW for at fastsætte dette. [7]