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

时间:2013-10-10 08:38:27

标签: 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文件与目标文件一起生成。

当谈到链接时 - " -lgcov“不支持与GCC一起使用的链接器标志。

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

正如指定am链接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和开发者工具。

3 个答案:

答案 0 :(得分:14)

我解决了这个问题。

我错过了以下Linker Flags

-Wall -fprofile-arcs -ftest-coverage

答案 1 :(得分:3)

上述答案对OSX Yosemite(10.10.3)与Xcode 6.3.1无效。似乎Apple移动了这些库。我能够使用以下编译选项:

-lclang_rt.profile_osx 
-L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/6.1.0/lib/darwin

答案 2 :(得分:3)

其他链接标记-fprofile-arcs为我解决了这个问题。

Build Settings > Other Linker Flags > -fprofile-arcs