2010-09-14 4 views
3

J'utilise récemment gcov pour collecter les informations de couverture de code. gcov joue bien avec l'application exécutable :), mais lorsque j'essaie de charger un fichier .so, j'ai cette erreur: symbole inconnu __gcov_merge_add.peut gérer gcov avec objet partagé?

Ensuite, je recherche sur Google et quelqu'un a dit ajoutant -lgcov à l'indicateur de lien (LDFLAGS), j'ai ajouté cette option et cela n'a pas fonctionné. J'essaie aussi - option de couverture dans l'indicateur de lien, ne peut pas se débarrasser de cette erreur.

Quelqu'un peut-il vous aider à résoudre ce problème?

Merci.

Répondre

5

J'ai également rencontré ce problème, mais je l'ai résolu depuis. Je viens d'utiliser l'option --coverage à la fois dans CPPFLAGS et LDFLAGS. Je pense que cela devrait prendre soin de la compilation pour vous.

L'objet partagé ne semble toujours pas produire de fichiers .gcda et je ne suis pas sûr de savoir comment résoudre ce problème. Comme vous l'avez dit, cela fonctionne bien avec les exécutables, mais les objets partagés semblent avoir quelques problèmes.

EDIT: Apparemment, gcov prend en charge les objets partagés maintenant. J'ai fait beaucoup de recherches hier et trouvé des réponses contradictoires, j'ai donc posté la liste d'aide de gcc. Voir le fil ici: http://gcc.gnu.org/ml/gcc-help/2010-09/msg00130.html. Je n'ai pas encore essayé de résoudre mon problème en fonction de la réponse, mais je le posterai quand je le ferai.

EDIT 2: Les objets partagés fonctionnent avec gcov (ou plutôt avec l'option --cover avec gcc). Il y a un autre poste avec des détails ici: gcov: producing .gcda output from shared library?. Il fait également référence au même fil ci-dessus.

+0

Merci, il semble que gcov ne peut pas collecter des données de couverture contre un objet partagé ... – maguschen

+0

En fait, je pense que c'est le cas maintenant. Voir ma modification. – deuberger

Questions connexes