使用GCOV和LCOV工具的GCC功能,我可以在Linux上成功获取我们C++代码库上的代码覆盖率信息。CLang代码覆盖率 - Mac OS X - 链接器错误
但是我在Mac OSX上遇到了麻烦。由于苹果公司现在还没有经典的GCC编译器,而且我们担心LLVM-GCC编译器有一天也会消失(LLVM-GCC甚至没有作为XCode 5.0中的一个选项提供) - 我们决定使用CLang来编译我们的代码。
在使用CLang编译器iam传入这些标志时 - > -g -fprofile-arcs -ftest-coverage生成代码覆盖率信息。
我可以看到与对象文件一起生成的.gcno文件。
当谈到链接 - “-lgcov”与不支持GCC作品链接器标志
上锵/ LLVM代码覆盖率现在由‘profile_rt’库支持 不幸的是这是一个有点。很难找到这个库,因为苹果无论出于何种原因决定不将它包含在默认库路径中,而是需要手动导航到/ 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
我也尝试对链接的动态库 - 在 在/ usr/lib文件夹中找到libprofile_rt.dylib - 但我仍然得到同样的问题。
这是在山狮上运行的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
我也有5.0的XCode以及开发者工具安装
任何答复将不胜感激。
谢谢!
你用什么分析结果? –
在使用Slather进行代码覆盖和注入Xcode时,发生了这个问题,在这种情况下,此答案中的解决方法也起作用。 –
这些是编译器标志而不是链接器标志。他们似乎不太可能修复链接错误,并且他们不会为我修复它... – poolie