我正在使用GCC版本3.3.6。当我使用-fprofile-arcs
和-ftest-coverage
检测目标文件时,会创建相应的*.bb
和*.bbg
文件。
然后将目标文件链接到一个静态库libfoo.a
,其中包含:
ar rcs libfoo.a foo1.o foo2.o
。
最后,将一系列静态库链接在一起以创建我的可执行文件:
gcc -fprofile-arcs -o foo.o <static libraries linked all>
现在,当我运行图像时,* .da文件没有被创建。我缺少一步吗?有没有人有任何其他建议?
感谢。
答案 0 :(得分:3)
可执行文件需要与gcov库链接:
gcc -fprofile-arcs -o foo.o <static libraries linked all> -lgcov
编辑:从gcc 4.1.2开始,--coverage
选项可用作-fprofile-arcs -ftest-coverage
(编译时)和-lgcov
的同义词(当链接)。
此外,值得注意的是,文件是在与编译相同的目录中创建的。该目录应该可以从执行环境访问。最新版本的gcc(4-1)引入了环境变量来调整目标目录:GCOV_PREFIX和GCOV_PREFIX_STRIP,请参阅gcc doc的cross-profiling section。