我发现有些库链接到librt.so
,而另一些则没有。我想知道它在什么情况下被链接。
我从来没有直接使用过这个库。是否有任何演示可以直接使用?是否有与之相关的头文件?
答案 0 :(得分:0)
$ 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标准的某些版本中。
答案 1 :(得分:0)
这些功能适用于实时Solaris(实时表示在时间边界内保证的响应),此功能自此已集成到主线Solaris中,并且是libc的一部分。 Librt仅出于历史,向后兼容的原因而存在,您无需引用它。