我有一个使用clock_gettime
的计时器程序。这需要-lpthread
选项才能成功编译,否则会出现undefined reference to 'clock_gettime'
错误。
到目前为止,我已经探索了我们可以用#warning
生成预处理器警告消息,并检查#if __has_include("<pthread.h>")
是否存在include。但检查这些并不能真正检查是否定义了clock_gettime
函数。
只是好奇我是否可以制作一条自定义消息,在编译时或预处理时警告那些在没有它的情况下编译的人包括-lpthread
选项。
我在Windows上使用MinGW。
我有一个使用
clock_gettime
的计时器程序。这需要-lpthread
选项才能成功编译,否则会得到对clock_gettime
错误的未定义引用。
clock_gettime
需要-lrt
,请参阅man clock_gettime
。-lpthread
恰好依赖于该库。
-lpthread
链接器选项永远不应该使用,因为它还不够。编译和链接多线程应用程序的正确方法是使用-pthread
编译器和链接器选项。编译器选项定义所需的宏,链接器选项链接正确的库。
我很好奇我是否可以制作一条自定义消息,在编译时或预处理时警告那些在没有它的情况下编译的人包括
-lpthread
选项。
-lrt
是一个链接器选项。当对象文件与链接分开编译时,链接器选项不是编译器命令行的一部分,因此在该阶段不可用。有链接时代码生成,但是,编译器通常不会将链接器选项导出为宏,以供正在编译的代码检查。