gcov support for shared library

Andre-Marcel Hellmund mail@andihellmund.com
Wed Sep 15 13:16:00 GMT 2010

Hey Daniel,
> Does gcov support shared libraries now?  I'm using gcc 4.5.1.  I've found conflicting reports elsewhere.
I was just doing a very simple test using version 4.5 and it is working 
correctly when using shared libraries. The .gcda files are generated for 
both, the executable and the shared library ...
> gcov data files (.gcda) are produced for my test program, but not for the shared library it is testing.  Everything compiles fine though and the .gcno files are produced for both the test program and the shared library.  Also, if I compile all of the source files (those from the library and those from the test program) into one executable, the .gcda files are produced correctly.  Is there any way to make it work with a shared library?
The only thing that I could think of is that your shared library was 
build in a different directory than the one you are running your 
executable. By default, the --coverage option will embed the final 
*.gcda filename into the excutable or shared library. E.g.

# strings liblib.so | grep gcda

Are the files written to the embedded file?

Fortunately, there's a way to overwrite the default file path. Please 
for the GCOV_PREFIX environment variable.

Hope that helps. If not, please let us know ...

More information about the Gcc-help mailing list