Właśnie odkryłem, że flaga -lm
jest potrzebna gcc, aby skompilować program, który odwołuje się do funkcji z biblioteki matematycznej. Zastanawiam się, dlaczego wyraźna flaga linkowania nie jest potrzebna podczas kompilowania programów zawierających inne biblioteki, takie jak biblioteka czasu. Jeśli napiszę program, w którym wywoływana jest funkcja time()
, kompiluje się bez problemów, nawet bez opcji łączenia. Ale program z włączoną biblioteką matematyczną nie zadziała bez flagi -lm
.gcc: dlaczego flaga -lm jest potrzebna do połączenia biblioteki matematycznej?
Czy ktoś może wyjaśnić przyczynę tego zachowania? Dziękuję za Twój czas.
Dziwne względy historyczne, ale głównie dlatego, że tak to jest: http://stackoverflow.com/questions/1033898/why-do-you-have-to-link-the-math-library-in-c – birryree