我有一个在 Ubuntu 12.04 下使用 clang++ 3.2 开发的 C++ 源代码树,它构建了一些库,然后使用这些库和其他各种系统库的通常集合编译一些应用程序。两个谜题。客户端报告由于未定义对clock_gettime() 的引用而无法构建代码。果然,我没有在构建逻辑(scons)中包含强制性的“-lrt”。
第一个难题:即使我没有在任何地方指定“-lrt”,它也可以正确编译、链接和执行,并且不会对我的系统产生任何抱怨!如何正确解析此符号?我怀疑这是因为应用程序链接到一个本身需要 librt 的动态库,但我不明白为什么会发生这种情况背后的逻辑?
第二个难题:假设在没有“-lrt”的情况下如何解决clock_gettime()的问题得到了令人满意的解释,为什么这会发生在我的系统上而不是客户端非常相似的设置上?
“……一个谜,包裹在一个谜中,一个谜”——温斯顿·丘吉尔
对揭示这里真实情况的工具的建议将受到欢迎。