Я обнаружил, , как предложено здесь , что добавление -lgcov к строке сборки при создании разделяемой библиотеки, содержащей сборку .o с -fprofile-arcs -ftest-покрытие, решило эту проблему для меня. И, конечно же, связывание исполняемого файла с -lgcov. Построил разделяемую библиотеку так:
g++ -shared -o libMyLib.so src_a.o src_b.o src_c.o -lgcov
И исполняемый файл выглядит так:
g++ -o myExec myMain.o -lMyLib -lgcov
Добавление -lgov в сборку разделяемой библиотеки (не только exe) решило эту дополнительную ошибку для меня:
hidden symbol `__gcov_merge_add' in /usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcov.a(_gcov_merge_add.o) is referenced by DSO
/usr/bin/ld: final link failed: Nonrepresentable section on output
Обратите внимание, что -lgcov должен быть последней связанной библиотекой.