小编kam*_*yFC的帖子

CLang代码覆盖范围 - Mac OS X - 链接器错误

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

但我在Mac OSX遇到麻烦.

由于Apple不再使用经典的GCC编译器,我们担心LLVM-GCC编译器有一天会消失(LLVM-GCC甚至不能作为XCode 5.0中的选项) - 我们决定使用CLang编译我们的码.

使用CLang编译器iam传入这些标志 - > -g -fprofile-arcs -ftest-coverage来生成代码覆盖率信息.

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

当涉及链接时 - 不支持与GCC一起使用的"-lgcov"链接器标志.

现在,"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 
Run Code Online (Sandbox Code Playgroud)

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

这是在Mountain Lion上运行的CLang版本.

clang --version
Apple LLVM version 5.0 (clang-500.2.75) (based on LLVM 3.3svn)
Target: …
Run Code Online (Sandbox Code Playgroud)

macos linker code-coverage clang

11
推荐指数
2
解决办法
5131
查看次数

标签 统计

clang ×1

code-coverage ×1

linker ×1

macos ×1