Что такое librt.so?Как я могу использовать это напрямую? - PullRequest
0 голосов
/ 14 мая 2019

Я считаю, что некоторые библиотеки связаны с librt.so, а другие нет.Мне интересно, при каких обстоятельствах это связано.

Я никогда не использовал эту библиотеку напрямую.Есть ли демонстрация, показывающая прямое использование этого?С ним связан файл заголовка?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Функции предназначены для Real Time Solaris (Real Time означает гарантированный отклик на временной границе), который с тех пор был интегрирован в основной Solaris и является частью libc.Librt присутствует только по историческим причинам, из-за обратной совместимости, и вам не нужно ссылаться на него.

0 голосов
/ 14 мая 2019
$ nm /usr/lib32/librt.a | grep ' T ' | grep -v ' __'
00000000 T aio_cancel
00000000 T aio_error
00000000 T aio_fsync
00000000 T aio_read
00000000 T aio_read64
00000000 T aio_return
00000130 T aio_suspend
00000000 T aio_write
00000000 T aio_write64
00000000 T timer_create
00000000 T timer_delete
00000000 T timer_getoverrun
00000000 T timer_gettime
00000000 T timer_settime
00000000 T shm_open
00000000 T shm_unlink
00000000 T mq_open
00000000 T mq_close
00000000 T mq_unlink
00000000 T mq_getattr
00000000 T mq_setattr
00000310 T mq_notify
00000000 T mq_send
00000000 T mq_receive

И действительно, если мы посмотрим, например, в man shm_open мы видим

Ссылка с -lrt.

так что список предоставленных функций, кажется, правильный.

Существует также страница Solaris https://docs.oracle.com/cd/E86824_01/html/E54772/librt-3lib.html, которая объясняет, что библиотека librt реэкспортирует некоторые символы, фактически реализованные в libc, и существует по историческим причинам, как это было указано в некоторых версиях стандарта Posix.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...