macos - Clang 代码覆盖率 - Mac OS X - 链接器错误

标签 macos linker clang code-coverage

我可以使用 GCOV 的 GCC 功能和 LCOV 工具成功获取 Linux 上 C++ 代码库的代码覆盖率信息。

但是我在 Mac OS X 中遇到了问题。

由于 Apple 不再拥有经典的 GCC 编译器,而且我们担心 LLVM-GCC 编译器有一天也会消失(LLVM-GCC 在 Xcode 5.0 中甚至不作为选项提供) - 我们决定使用 Clang编译我们的代码。

使用 Clang 编译器时,我传递这些标志 --> -g -fprofile-arcs -ftest-coverage 生成代码覆盖率信息。

我可以看到 .gcno 文件与目标文件一起生成。

在链接方面 - 不支持与 GCC 一起使用的“-lgcov”链接器标志。

“profile_rt”库现在支持 Clang/LLVM 上的代码覆盖率。 不幸的是,找到这个库有点棘手,因为苹果出于某种原因决定不将其包含在默认库路径中。相反,您必须手动导航到/usr/lib/才能链接到它:

按照指定,我正在链接 libprofile_rt.a 库。

但是我有链接器问题。

但我不断收到这些链接器错误

Undefined symbols for architecture x86_64:
  "_llvm_gcov_init", referenced from:
      ___llvm_gcov_init in Iso9660Reader.o
      ___llvm_gcov_init in AutoExtractCreator.o
      ___llvm_gcov_init in TempFilePath.o
      ___llvm_gcov_init in TempPath.o
      ___llvm_gcov_init in ReadDirectory.o
      ___llvm_gcov_init in OpenDirectory.o
      ___llvm_gcov_init in SpltPath.o
      ...
ld: symbol(s) not found for architecture x86_64 

我还尝试链接动态库 - libprofile_rt.dylib 中找到 /usr/lib 文件夹 - 但我仍然遇到同样的问题。

这是在 Mountain Lion 上运行的 Clang 版本。

clang --version
Apple LLVM version 5.0 (clang-500.2.75) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix

我还安装了 Xcode 5.0 和开发人员工具。

最佳答案

我解决了这个问题。

我缺少以下链接器标志

-Wall -fprofile-arcs -ftest-coverage

关于macos - Clang 代码覆盖率 - Mac OS X - 链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19290946/

相关文章:

php - 如何在 Xampp for Mac 上安装 ffmpeg 和 lame?

c++ - 不断收到错误 LNK2019 : unresolved external symbol

c++ - 设置非常简单的 C/C++ 链接问题

c - 复合文字的生命周期

c++ - 在 unix 上从 c/c++ 断点/调试其他用户进程

c - 如果不使用 sudo 运行,为什么这个带有 execl 的程序会中断?

c++ - 为什么链接器不能防止 C++ 静态初始化顺序失败?

c++ - Xcode clang 编译器中的 unsigned long long 意外行为

c - 有没有适合替代C宏的推荐代码生成方式?

objective-c - NSStatusItem 单击两次后才会响应