Насколько я знаю, некоторые математические функции содержатся в libc, а другие — в libm. Я обнаружил это экспериментально:
$ nm --dynamic --defined-only /lib/x86_64-linux-gnu/libm.so.6 | grep -w abs
$ nm --dynamic --defined-only /lib/x86_64-linux-gnu/libc.so.6 | grep -w abs
T abs
Есть ли требование относительно того, какие математические функции должны быть предоставлены libm? Предоставляют ли вместе libc и libm все математические функции, требуемые стандартом C?
math.h
. - person Etienne de Martel   schedule 05.01.2019abs()
находится в stdlib.h, а не в math.h. - person KamilCuk   schedule 05.01.2019-lm
или его эквивалентом для получения математических функций из стандартной библиотеки C — конкретный пример — macOS. Давным-давно иметь отдельную библиотеку было разумно, потому что одно и то же базовое оборудование могло иметь или не иметь доступную арифметику с плавающей запятой (Intel 80386 с дополнительным 80387 FPU (модуль с плавающей запятой) для позднего примера — что также помогает датировать, когда это была проблема). В настоящее время это редко является проблемой; было бы разумнее сделать-lm
необязательным. Правила во встроенном пространстве другие. - person Jonathan Leffler   schedule 05.01.2019printf()
иscanf()
— с поддержкой и без поддержки плавающей запятой (потому что поддержка плавающей запятой довольно велика, что имело значение, когда ваша программа была ограничена 64 КиБ). - person Jonathan Leffler   schedule 05.01.2019