может gcov иметь дело с общим объектом? - PullRequest
3 голосов
/ 14 сентября 2010

Я недавно использую gcov для сбора информации о покрытии кода.gcov хорошо работает с исполняемым приложением :), но когда я пытаюсь загрузить файл .so, я получаю эту ошибку: неизвестный символ __gcov_merge_add.

Затем я выполняю поиск в Google, и кто-то сказал, добавив -lgcov к флагу ссылки.(LDFLAGS), я добавил эту опцию, и она не работала.Я также пробую опцию --coverage в флаге ссылки, не могу избавиться от этой ошибки.

Может ли кто-нибудь помочь в этом вопросе?

Спасибо.

1 Ответ

5 голосов
/ 15 сентября 2010

Я тоже столкнулся с этой проблемой, но с тех пор решил ее.Я просто использую опцию --coverage как в CPPFLAGS, так и в LDFLAGS.Я думаю, что это должно позаботиться о проблеме компиляции.

Общий объект все еще не производит файлы .gcda, хотя я не уверен, как решить эти проблемы.Как вы сказали, он прекрасно работает с исполняемыми файлами, но у общих объектов, похоже, есть некоторые проблемы.

РЕДАКТИРОВАТЬ: Очевидно, gcov теперь поддерживает общие объекты.Вчера я провел значительное количество исследований и нашел противоречивые ответы, поэтому я отправил по почте список gcc-help.См. Нить здесь: http://gcc.gnu.org/ml/gcc-help/2010-09/msg00130.html. Я еще не пытался решить свою проблему, основываясь на ответе, но я отправлю ответ, когда сделаю.работать с gcov (или вместо опции --cover с gcc).Здесь есть еще один пост с подробностями: gcov: вывод .gcda из общей библиотеки? .Он также ссылается на ту же ветку выше.

...