我已经编写了一些对条件变量使用计时等待的pthread代码,但是为了确保相对等待,我使用pthread_condattr_setclock()将condvar的时钟类型设置为CLOCK_MONOTONIC。
为了在RHEL4上编译和链接pthread_condattr_setclock(),我必须在我的gcc命令行中添加-I/usr/include/nptl和-L/usr/lib/nptl。我的理解是2.6内核( RHEL4有)默认使用NPTL pthread实现,所以为什么我需要显式地指定这些路径才能使用这个函数?
只有这个函数需要我这样做:如果省略它,所有的编译和链接都可以正常进行,而不需要指定额外的路径(尽管代码的行为是不正确的)。
发布于 2010-03-02 17:32:58
根据我所能发现的,/usr/include和/usr/lib中的pthread头和库分别是旧的LinuxThreads实现,我推测它们是为了向后兼容(即,您应该在旧接口上构建),但在运行时使用NPTL实现(它的接口是LinuxThreads接口的超集)。
因此,如果您知道需要新的NPTL接口(即,如果您需要一些额外的功能),并且最重要的是,您知道NPTL接口将在运行时可用,则只能使用它。
https://stackoverflow.com/questions/2356448
复制相似问题