gcc: зачем нужен флаг -lm для линковки математической библиотеки?

Я только что обнаружил, что флаг -lm необходим gcc для компиляции программы, которая ссылается на функцию из математической библиотеки. Мне интересно, почему явный флаг связывания не нужен при компиляции программ, содержащих другие библиотеки, такие как библиотека времени. Если я напишу программу, в которой вызывается функция time(), она будет компилироваться без проблем, даже без параметров связывания. Но программа с задействованной математической библиотекой просто не будет работать без флага -lm.

Может ли кто-нибудь объяснить причину такого поведения? Спасибо за ваше время.


person matteoamc    schedule 05.01.2011    source источник
comment
Странные исторические причины, но в основном потому, что так оно и есть: stackoverflow.com/questions/1033898/   -  person wkl    schedule 05.01.2011