Comment faire pour resovle gcov init problème de référence non défini lorsque le lien
je travail sur un code C de la couverture de l'étude et ont rencontré un problème ci-dessous, la version de GCC 4.4.6:
- ajout de l'indicateur de compilateur
CFLAGS = --coverage
et l'option linkerLDFLAGS := --coverage
ouLOCAL_LDLIBS := --coverage
et j'ai obtenu le message d'erreur:
undefined reference to '__gcov_init'" and "undefined reference to '__gcov_merge_add'
- ajout de l'option
LOCAL_LDFLAGS := --coverage
, et a obtenu erreur de lien:
libgcov.a(_gcov.o): in function __gcov_set_sampling_rate: undefined reference to '__gcov_sampling_rate'
libgcov.a(_gcov.o): in function gcov_exit: undefined reference to '__gcov_pmu_profile_filename'
libgcov.a(_gcov.o): in function __gcov_init: undefined reference to '__gcov_pmu_profile_options' '__gcov_pmu_top_n_address'
quelqu'un peut-il fournir des suggestions à ce sujet?
3 réponses
Essayez cette méthode:
compilez le code pour lequel vous voulez générer la couverture avec ces options:
CFLAGS: -fprofile-arcs -ftest-coverage
LFLAGS: -lgcov --coverage
si cela ne résout pas le problème, veuillez fournir quelques informations sur la structure de votre application, c'est-à-dire si son programme unique ou une application impliquant des bibliothèques partagées/statiques, etc.
espérons que cela aide!
vous liez avec-lgcov? Si vous utilisez un Makefile, il serait d'une grande aide d'y jeter un oeil afin de vous aider.
Je ne peux pas être sûr quel changement a finalement fait l'affaire pour moi mais je pense que c'était le -fprofile-generate
drapeau. En utilisant le GPS GNAT je suis allé à la Switches
tab sur la gauche et ensuite sélectionné le Ada Linker
onglet sur le haut. Ensuite j'ai activé la case à cocher Code Coverage
. Oh ouais j'ai trouvé ça sur le Builder
tab dans la même zone si vous activez le Recompile if switches changed
case à cocher il peut sauver beaucoup de dents grincement. Ça ralentit les choses pour les pros, mais ça m'a aidé.