【发布时间】:2013-10-17 22:17:12
【问题描述】:
我可以使用 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 上的代码覆盖率。 不幸的是,找到这个库有点棘手,因为无论出于何种原因,Apple 决定不将它包含在默认库路径中。相反,您必须手动导航到 /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 和开发者工具。
【问题讨论】:
标签: macos linker clang code-coverage