我发现一些库链接到librt.so
,而另一些则没有。我想知道它在什么情况下是相关的。
我从来没有直接使用过这个库。有没有演示直接使用它的演示?有没有相关的头文件?
这些函数适用于实时 Solaris(实时意味着在时间边界内保证响应),它已被集成到主线 Solaris 中并且是 libc 的一部分。Librt 仅出于历史、向后兼容性的原因而存在,您不需要引用它。
$ 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 标准中指定的。