Gcc 检查librt链接

Gcc 检查librt链接,gcc,conditional-compilation,librt,Gcc,Conditional Compilation,Librt,是否有一个宏,我可以用它来检查librt是否被链接到,比如通过gcc的-lrt?不,gcc没有这样的宏(我已经转储了预处理器宏来检查)。在使用Microsoft编译器的Windows上,您可以使用\u VC\u NODEFAULTLIB宏来检测没有libc引用的版本。您能解释一下为什么需要它吗?(预处理器通常不知道链接器的内容,它在考虑链接之前就已经运行了。)我正在整理一个我常用的函数文件夹,不想一直写下去。计时文件中的一个函数依赖于librt,因此,如果包含该文件而未链接到librt,即使未调

是否有一个宏,我可以用它来检查librt是否被链接到,比如通过gcc的
-lrt

不,gcc没有这样的宏(我已经转储了预处理器宏来检查)。在使用Microsoft编译器的Windows上,您可以使用
\u VC\u NODEFAULTLIB
宏来检测没有
libc
引用的版本。

您能解释一下为什么需要它吗?(预处理器通常不知道链接器的内容,它在考虑链接之前就已经运行了。)我正在整理一个我常用的函数文件夹,不想一直写下去。计时文件中的一个函数依赖于
librt
,因此,如果包含该文件而未链接到
librt
,即使未调用该函数,也会导致编译失败。这是您需要在构建系统中处理的问题,而不是在源代码中。如果有人刚刚编译(并且还没有链接)该文件,则根本不会有链接器标志,这不会是一个问题。@chowsocks,那么您的
.bash\u profile
就是您的构建系统;-)@所以,在您的构建系统中,只需将
-lrt
替换为
-DI\u-WANT\u LIBRT-lrt
,就可以了。谢谢您的检查。你能展示一下你是如何转储预处理器宏的,这样我(和其他人)将来可以这么做吗?