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