2013-02-25 63 views
0

是否有宏,我可以#ifdef检查librt是否已链接,即通过-lrt与gcc?检查librt链接

+1

你能解释为什么你需要那个吗? (预处理器通常没有关于链接器的东西,它甚至在考虑连接之前运行。) – Mat 2013-02-25 06:20:30

+0

我正在编写一个我通常使用的函数的文件夹,不想一直写。定时文件中的一个功能取决于'librt',所以如果包含该文件而不链接到'librt',即使该函数未被调用,也会导致编译失败。 – 2013-02-25 07:21:03

+1

这是你在编译系统中需要处理的东西,而不是源代码。如果有人只编译(并且还没有链接)该文件,那么根本就没有链接器标志,这不会成为问题。 – Mat 2013-02-25 07:36:10

回答

1

不,gcc没有这样的宏(我倾倒了预处理器宏来检查)。在带有Microsoft编译器的Windows上,您可以使用_VC_NODEFAULTLIB宏来检测没有libc引用的版本。

+0

谢谢您的检查。你能否展示你如何倾销预处理器宏,以便我(和其他人)将来可以做到这一点? – 2013-02-25 07:22:14

+0

看看SO上的这个答案:http://stackoverflow.com/a/2224357/848177 – 2013-02-25 08:38:14