OSX上的clang:-finstrument-functions链接错误

Posted

技术标签:

【中文标题】OSX上的clang:-finstrument-functions链接错误【英文标题】:clang on OSX: -finstrument-functions link errors 【发布时间】:2013-02-26 02:54:10 【问题描述】:

我正在尝试使用__cyg_profile_func_*-finstrument-functions 在函数运行前后进行特定检查(例如,检查马赫端口泄漏等)。这是在 OS X 上。

代码已编写且功能齐全,但我有大量未定义的引用,例如,

std::__1::basic_ios<wchar_t, std::__1::char_traits<wchar_t> >::init(std::__1::basic_streambuf<wchar_t, std::__1::char_traits<wchar_t> >*)

似乎正在发生某种内联,但检测仍在尝试引用该函数的非内联版本。是否可以免除标准 C++ 库的检测?或者,可以在这种特殊情况下完全禁用 clang 中的内联?

干杯!

【问题讨论】:

我遇到了完全相同的问题。似乎启用 -finstrument-functions 使 clang 无法链接到 libc++ :/ 【参考方案1】:

在 gcc 中,-finstrument-functions-exclude-file-list=stdlib/include 会做你想做的事。但是,它还没有在clang中实现(至少trunk不识别这个选项)。

【讨论】:

【参考方案2】:

Clang 有一个选项 -finstrument-functions-after-inlining 在这种情况下可以使用。是的,不幸的是,clang 不支持基于文件/目录禁用检测。如果检测太麻烦,那么更改标准 C++ 库的源代码以添加属性也可能会有所帮助。见:https://***.com/a/69474100/811335

【讨论】:

以上是关于OSX上的clang:-finstrument-functions链接错误的主要内容,如果未能解决你的问题,请参考以下文章

mac osx 10.9.2 上的 mysql-python:错误:命令“/usr/bin/clang”失败,退出状态为 1

OS X 上的 LLVM 与 clang

Linux Clang和Objective-C基础库

Mac 上的 G++ 链接时优化 - 编译器/链接器错误?

Qt 5.1 for OSX 安装只包含 clang_64 目录,如何使用 macports gcc 编译?

ld:在带有 gcc/clang -static 标志的 OSX 10.6 上找不到 -lcrt0.o 的库