Функция clock_gettime()
и ряд других функций можно найти в библиотеке rt
(в режиме реального времени) в современных версиях Solaris и в библиотеке posix4
(со времен POSIX, часть 4 ака POSIX.4 для расширений «реального времени») на старых версиях. Функции реального времени теперь включены в базовую спецификацию POSIX .
Итак, для разрешения clock_gettime()
:
- Добавить либо
-lrt
, либо, так как это не сработало для вас, -lposix4
в Solaris. - Добавьте
-lrt
в Linux. - Добавьте ни в macOS.
Вкл macOS, функции (включая математические функции, часто встречающиеся в -lm
) находятся в основной системной библиотеке. Apple предоставляет фиктивную библиотеку -lm
, но вам не нужно ее использовать.
Погружаясь в историю, некоторые старые версии Solaris, такие как Solaris 9 и, как мне кажется, Solaris 10, предоставляют -lposix4
; Я не использовал Solaris 11, но я ожидал, что библиотека там будет существовать, даже если она больше не нужна. Обычно страницы справочника рассказывают о нестандартных библиотеках, которые необходимы для использования функции. Просматривая руководства на сайте Oracle, я обнаружил:
Так что, на первый взгляд, использование -lrt
должно сработать для вас. Однако, если вы используете достаточно старую версию Solaris (а старая версия G CC предполагает, что вы, вероятно, не используете последнюю версию Solaris), то вам, возможно, придется использовать -lposix4
.
Поиск в Google по запросу «libposix4.so solaris» дает:
, где говорится:
librt, libposix4 - библиотека расширений реального времени POSIX.1b
Исторически функции в этой библиотеке обеспечивали многие интерфейсы, определенные расширением реального времени POSIX.1b. Смотрите стандарты (5). Эта функциональность теперь находится в lib c (3LIB).
Эта библиотека поддерживается для обеспечения обратной совместимости как для среды выполнения, так и для сред компиляции. Общий объект реализован в виде фильтра в lib c .so.1. При разработке новых приложений не нужно указывать –lrt
.
Возвращаясь к информации об управлении версиями для моего makefile
, я обнаружил, что в ноябре 1996 года я добавил -lposix4
в make-файл; предыдущая версия от июня 1993 года не содержала этого. Итак, это было долгое (долгое) время go. Я не уверен, какую версию Solaris вы используете. Википедия по Solaris предполагает, что я внес изменения для Solaris 2.4 (1995) или Solaris 2.5 (1996). Возможно, одна из этих версий добавила -lposix4
для clock_gettime()
, или же я написал программу, нуждающуюся в этом, но она была доступна ранее. (Просто для вашего удовольствия, первая версия makefile
была датирована 1987-01-27. Она существует довольно давно!)